Leetcode算法——50、实现乘方运算
实现函数 pow(x,n)
,返回 xnx^nxn。
备注:
1、-100.0 < x < 100.0
2、n是一个32位的整数,范围为[−231,231−1][−2^{31}, 2^{31} − 1][−231,231−1]
示例:
Example 1:
Input: 2.00000, 10
Output: 1024.00000Example 2:
Input: 2.10000, 3
Output: 9.26100Example 3:
Input: 2.00000, -2
Output: 0.25000
思路
1、暴力法
根据乘方的定义, xnx^nxn 表示 n 个 x 相乘,那么循环 n 次的乘法即可。
算法复杂度为 O(n)。
2、分治法
根据公式:xn=(xn/2)2x^n = (x^{n/2})^2xn=(xn/2)2,可以将问题转化为求 xn/2x^{n/2}xn/2 的子问题,使用分治法可以解决,分治法的结束条件为 21=22^1=221=2
注意:
- n/2n/2n/2 可能是小数,因此要提前判断 n 的奇偶性。
- n 可能是负数,因此要提前将 n 转为整数,并使用公式xn=1/x−nx^n = 1/x^{-n}xn=1/x−n
算法复杂度为 O(logn)。
python实现
def myPow(x, n):""":type x: float:type n: int:rtype: float分治法。"""def fun(x, n):'''递归,x^n = (x^(n/2))^2'''# 递归结束条件if n == 1:return x# 递归half = fun(x, n // 2)if n % 2 == 1: # 如果是奇数,则还需要再乘以一个xreturn half * half * xelse:return half * halfif n == 0:return 1elif n > 0:return fun(x, n)else:return 1/fun(x, -n)if '__main__' == __name__:x, n = 2.10000, 3print(myPow(x, n))
Leetcode算法——50、实现乘方运算相关推荐
- LeetCode 50 实现乘方运算
力扣 思路: 一.调用库函数pow(x,n) return pow(x,n); 二.x*x*x......循环n次(超时) 三.快速幂算法 当n为负数时,计算x^-n后取倒数, 得到结果, 只考 ...
- LeetCode算法题整理(200题左右)
目录 前言 一.树(17) 1.1.后序遍历 1.2.层次遍历 1.3.中序 1.4.前序 二.回溯(20) 2.1.普通回溯 2.2.线性回溯:组合.排列.子集.分割 2.3.矩阵回溯 三.二分查找 ...
- Leetcode算法Java全解答--41. 缺失的第一个正数
Leetcode算法Java全解答–41. 缺失的第一个正数 文章目录 Leetcode算法Java全解答--41. 缺失的第一个正数 题目 想法 结果 总结 代码 我的答案 大佬们的答案 测试用例 ...
- 算法学习 |从无到有 刷爆LeetCode算法神器
开始文章输出之前,我没有着急下笔,而是认真的问了自己几个问题. 我为什么要学算法? 如何保持学习的热情和积极性? 学到的算法是否可以应用到工作中? 学到的算法怎么应用到工作中? 如何实现从掌握到精通? ...
- LeetCode算法题-Convert a Number to Hexadecimal(Java实现)
这是悦乐书的第219次更新,第231篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第86题(顺位题号是405).给定一个整数,写一个算法将其转换为十六进制.对于负整数,使 ...
- LeetCode算法题8:递归和回溯1
文章目录 前言 回溯算法: 一.合并两个有序链表(简单,可略过) 迭代遍历 一开始没有想到的递归解法 二.反转链表 迭代遍历(头插法): 递归: 三.组合 回溯: 四.全排列 回溯(交换): 回溯: ...
- LeetCode算法题5:双指针
文章目录 前言 一.有序数组的平方 二.轮转数组 三.移动零 四.两数之和 II - 输入有序数组 五.反转字符串 六.反转字符串中的单词 III 七.链表的中间结点 八.删除链表的倒数第 N 个结点 ...
- LeetCode算法题-Jewels and Stones(Java实现)
这是悦乐书的第313次更新,第334篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第182题(顺位题号是771).字符串J代表珠宝,S代表你拥有的石头.S中的每个字符都是 ...
- LeetCode算法总结-回溯法与深度优先搜索
转载自 LeetCode算法总结-回溯法与深度优先搜索 回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退 ...
最新文章
- 配置化的版本更新引导怎么做?
- Spring.Resource与Spring资源获取方式
- 洛谷——P1546 最短网络 Agri-Net
- 小程序学习(一):点击爱心变色 -- 最简单的事件实现
- BZOJ3638|CodeForces 280D k-Maximum Subsequence Sum
- 【深度学习】图像匹配Siamese网络实验记录
- 将DataRow转换为DataTable
- Mariadb----字符类型 (五)
- Data Structures(Chapter 3 of The Algorithm Design Manual)
- 9.template -- basic concepts
- 【JAVA】Collections.sort()实现动态数组自定义排序
- 稳压二极管的工作原理及稳压二极管使用电路图
- 【疯狂游戏】游戏策划面经
- 数据结构—哈夫曼编码
- AT070TN83 V1.0 背光不亮
- 个人网站音乐服务器,自己的私人音乐流媒体服务,这才是多少音乐者的梦寐以求的...
- Effective java读后感
- 圣诞礼物|2020年送这些礼物你就能拥有一个程序员男朋友
- react+express +materialui模板
- python中函数返回值为func 和func() 的区别
热门文章
- 计算机网络英语作文150字,微信投票的英语,写一篇关于网络投票看法的英语作文150字左右...
- linux_ohs安装_weblogic进行管理
- 联想笔记本大小写、数字键、触摸板切换图标不显示的解决方案
- 短信发送显示服务器失败,手机短信发不出去怎么办 手机故障解决方法【方法步骤】...
- 移动NB的APN知识汇总(及时补充)
- Mac删除已卸载软件残留启动台的图标
- 在c语言中把x和y互换怎么编译,已知int x=10,y=12;编程将x和y的值相互交换
- 通过主成分分析实现三维模型对齐【Principal Component Analysis】
- 嵌入式 linux 之 Lzma 移植
- vue给html加背景图,Vue背景图如何全屏显示