leetcode_50 Pow(x, n)

111 阅读1分钟

要求

实现 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

核心代码

class Solution:
    def myPow(self, x: float, n: int) -> float:
        return x ** n

另一解法

class Solution:
    def myPow(self, x: float, n: int) -> float:
        i= abs(n)
        res = 1.0
        while i != 0:
            if i % 2:
                res *= x
            x *= x
            i //= 2
        return res if n > 0 else 1/res

第三种解法

class Solution:
    def myPow(self, x: float, n: int) -> float:
        if not n:
            return 1
        def helper(x,n,tmp):
            if n <= 1:
                return x * tmp
            if n % 2:
                tmp *= x
                n -= 1
            return helper(x * x, n//2 ,tmp)
        res = helper(x,abs(n),1)
        return res if n > 0 else 1.0/res 

image.png

解题思路:第一种思路:直接使用python中的**完成乘方的计算,第二种解法:我们使用数学的方式,我们对n进行区分,分成奇数和偶数,当是奇数的时候,需要多乘一次x,最后在区分n的正负;第三种解法:我们使用递归的方式替换第二种方式中的循环,思路和第二种方式一样。