這篇博客講具體題目
50. Pow(x, n)
實現 pow(x, n) ,即計算 x 的 n 次冪函數。
示例:
輸入: 2.00000, 10
輸出: 1024.00000
===========================
輸入: 2.10000, 3
輸出: 9.26100
===========================
輸入: 2.00000, -2
輸出: 0.25000
解釋: 2-2 = 1/22 = 1/4 = 0.25
說明:
n 是 32 位有符號整數,其數值範圍是 。
class Solution:
def myPow(self, x: float, n: int) -> float:
"""
遞歸
n分爲奇偶數兩種情況
"""
if not n:
return 1
if n < 0 :
return 1/self.myPow(x, -n)
if n % 2:
# n爲奇數的情況
return self.myPow(x, n-1) * x
return self.myPow(x * x, n / 2)
執行用時 : 52 ms, 在Pow(x, n)的Python3提交中擊敗了80.77% 的用戶
內存消耗 : 13.3 MB, 在Pow(x, n)的Python3提交中擊敗了26.84% 的用戶
非遞歸的形式:
class Solution:
def myPow(self, x: float, n: int) -> float:
# 非遞歸(這裏用到了位運算,優點是速度快)
if n < 0:
x = 1 / x
n = -n
pow = 1
while n:
if n & 1:
pow *= x
x *= x
n >>= 1
# 把">>"左邊的運算數的各二進位全部右移若干位,>> 右邊的數字指定了移動的位數
return pow
執行用時 : 56 ms, 在Pow(x, n)的Python3提交中擊敗了70.98% 的用戶
內存消耗 : 13.2 MB, 在Pow(x, n)的Python3提交中擊敗了61.54% 的用戶
python 位運算