列表

详情


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

 

提示:

相似题目

x 的平方根

超级次方

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: double myPow(double x, int n) { } };

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
            

上一题