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%的用户