数值的整数次方
来源:互联网 发布:电脑打开淘宝口令 编辑:程序博客网 时间:2024/05/24 06:50
题目描述:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
解法一:
class Solution: def Power(self, base, exponent): return base ** exponent
…..,这样是找不到工作的!
解法二:
递归,时间复杂度变为logn
class Solution: def Power(self, base, exponent): flag = 0 if exponent ==0: return 1 elif exponent <0: flag = 1 exponent = exponent * -1 if exponent % 2 == 0: result = self.Power(base, exponent / 2)*self.Power(base, exponent / 2) elif exponent % 2 == 1: result = self.Power(base, (exponent -1)/ 2)*self.Power(base, (exponent -1)/ 2) * base return 1 / result if flag else result
解法三:
快速幂,时间复杂度也为logn,意思是把次方化为二进制,例如base为2,exponent为15,那么二进制就为1111,既可以按位拆成 0001,0010,0100,1000,十进制分别为1,2,4,8,这就相当于2^1*2^2*2^4*2^8,那么我们只有令temp=2,然后temp*=temp,就一次求出这四项,然后让结果等于这四项的累乘就可以了。
class Solution: def Power(self, base, exponent): flag = 0 if exponent == 0: return 1 elif exponent <0: flag = 1 exponent *= -1 result = 1 temp = base while exponent: if exponent & 1: #若最后一位是1则让result*temp result = result * temp temp *= temp exponent = exponent >> 1 #右移,因为是整数,当1全部移出后exponent为0 if flag == 1: result = 1 / result return result
阅读全文
0 0
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- 数值的整数次方
- win7/win10下安装Microsoft Loopback Adapter
- 生成对抗网络学习笔记5----DCGAN(unsupervised representation learning with deep convolutional generative adv)的实现
- 11月14日心得
- MySQL数据类型
- spring实战——装配Bean
- 数值的整数次方
- 最小生成树prim算法
- 例题8-1 煎饼(Stacks of Flapjacks, UVa120)
- JSON-XML转换工具
- 单位转换
- 查找之平衡二叉树
- 数人云|浅论Prometheus容器监控优缺点,2.0版本哪项改进受关注?
- java基础知识
- Android解析SD卡上的APK文件