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
posted @ 2021-04-08 15:02  swordspoet  阅读(43)  评论(0编辑  收藏  举报