跳到主要内容

50. Pow(x, n) [medium]

50. Pow(x, n) [medium]

https://leetcode-cn.com/problems/powx-n/

实现 pow(x, n) ,即计算 x 的 n 次幂函数。

示例 1:

输入: 2.00000, 10
输出: 1024.00000

示例 2:

输入: 2.10000, 3
输出: 9.26100

示例 3:

输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25

说明:

  • -100.0 < x < 100.0
  • n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1]

通过次数104,177 | 提交次数289,280

First Try

2020-07-02

之前在algs4上就看过这题,所以没什么悬念。主要的tricky在于当负数的时候,0需要特殊处理。另外就是需要考虑n为偶数和奇数的两种不同情况。

class Solution(object):
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float
"""
# 我记得有个递归logN的写法
# 但是没想到n还有小于0的情况。。。
# 0 ^ 0 = 1, 0 ^ -n 为不存在,但经测试发现可以返回float('inf')。。
def power(x, n):
if n == 0:
return 1
if n == 1:
return x
if n % 2 == 0:
return power(x * x, n // 2)
elif n % 2 == 1:
return pow(x * x, n //2) * x
if n < 0:
if x == 0:
return float('inf')
return 1 / power(x, -n)
return power(x, n)
  • 执行用时:28 ms, 在所有 Python 提交中击败了31.13%的用户
  • 内存消耗:12.9 MB, 在所有 Python 提交中击败了50.00%的用户