LeetCode 50. Pow(x, n)
50. Pow(x, n)
Difficulty: 中等
实现 ,即计算 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
-2<sup>31</sup> <= n <= 2<sup>31</sup>-1
-10<sup>4</sup> <= x<sup>n</sup> <= 10<sup>4</sup>
Solution
举个例子,要求2的5次方,我们可以先求2的2次方,因为2的5次方的2的2次方乘以2的2次方再乘以2,经过折半之后只用三次乘法就行了。如果是n为负数,可以将n转为正数然后求结果的倒数即可。
class Solution:
def myPow(self, x: float, n: int) -> float:
if n == 0:
return 1
if n < 0:
return 1 / self.myPow(x, -n)
half = self.myPow(x, n // 2)
if n % 2 == 0:
return half * half
if n > 0:
return half * half * x