剑指offer --- 数值的整数次方
程序员文章站
2022-06-17 17:09:00
...
本文算法使用python3实现
1 题目描述:
:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
时间限制:1s;空间限制:32768K
3 程序代码:
(1)方法一
class Solution:
def Power_1(self, base, exponent):
# 普通算法
# 对0进行界定
if base > -1e-7 and base < 1e-7:
return 0
if exponent == 1:
return base
if exponent == 0:
return 1
exp = abs(exponent)
res = 1.0
for i in range(exp):
res *= base
if exponent > 0:
return res
else:
return 1/res
(2)方法二:
class Solution:
def Power_2(self, base, exponent):
# 高效算法
if base > -1e-7 and base < 1e-7:
return 0
if exponent == 1:
return base
if exponent == 0:
return 1
exp = abs(exponent)
ans = self.Power_2(base, exp >> 1)
ans = ans * ans * 1.0
if exp & 1 == 1 :
# 如果幂为奇数
ans = ans * base
if exponent < 0:
return 1/ans
return ans
上一篇: 剑指offer——数值的整数次方
推荐阅读
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
剑指offer31:整数中1出现的次数(从1到n整数中1出现的次数)
-
剑指offer28:找出数组中超过一半的数字。
-
剑指offer27:按字典序打印出该字符串中字符的所有排列
-
C#版剑指Offer-001二维数组中的查找
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
剑指offer JZ31 整数中1出现的次数 Python 解
-
剑指offer:调整数组顺序使奇数位于偶数前面
-
剑指offer JZ54 字符流中第一个不重复的字符 Python 多解
-
[算法练习-剑指offer]题18.二叉树的镜像(Java)