class Solution {
public:
double myPow(double x, int n) {
}
};
50. Pow(x, n)
实现 pow(x, n) ,即计算 x
的整数 n
次幂函数(即,xn
)。
示例 1:
输入:x = 2.00000, n = 10 输出:1024.00000
示例 2:
输入:x = 2.10000, n = 3 输出:9.26100
示例 3:
输入:x = 2.00000, n = -2 输出:0.25000 解释:2-2 = 1/22 = 1/4 = 0.25
提示:
-100.0 < x < 100.0
-231 <= n <= 231-1
-104 <= xn <= 104
原站题解
python3 解法, 执行用时: 32 ms, 内存消耗: 14.9 MB, 提交时间: 2022-08-10 16:17:48
class Solution: def myPow(self, x: float, n: int) -> float: # 快速幂 + 迭代 def quickMul(N): ans = 1.0 # 贡献的初始值为 x x_contribute = x # 在对 N 进行二进制拆分的同时计算答案 while N > 0: if N % 2 == 1: # 如果 N 二进制表示的最低位为 1,那么需要计入贡献 ans *= x_contribute # 将贡献不断地平方 x_contribute *= x_contribute # 舍弃 N 二进制表示的最低位,这样我们每次只要判断最低位即可 N //= 2 return ans return quickMul(n) if n >= 0 else 1.0 / quickMul(-n)
python3 解法, 执行用时: 32 ms, 内存消耗: 15 MB, 提交时间: 2022-08-10 16:17:31
class Solution: def myPow(self, x: float, n: int) -> float: # 快速幂 + 递归 def quickMul(N): if N == 0: return 1.0 y = quickMul(N // 2) return y * y if N % 2 == 0 else y * y * x return quickMul(n) if n >= 0 else 1.0 / quickMul(-n)
golang 解法, 执行用时: 4 ms, 内存消耗: N/A, 提交时间: 2018-08-31 14:41:42
func myPow(x float64, n int) float64 { return math.Pow(x, float64(n)) }
java 解法, 执行用时: 38 ms, 内存消耗: N/A, 提交时间: 2018-08-31 14:40:28
class Solution { public double myPow(double x, int n) { return Math.pow(x, n); } }
python3 解法, 执行用时: 48 ms, 内存消耗: N/A, 提交时间: 2018-08-31 14:39:41
class Solution: def myPow(self, x, n): """ :type x: float :type n: int :rtype: float """ return x ** n