LeetCode 50. Pow(x, n)
阿新 • • 發佈:2020-08-02
實現 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] 。 # 遞迴 class Solution: def myPow(self, x: float, n: int) -> float: def quickMul(N): if N == 0: return 1.0 y = quickMul(N // 2) return y * y if N % 2 == 0 else y * y * x return quickMul(n) if n >= 0 else 1.0 / quickMul(-n) # 迭代 class Solution: def myPow(self, x: float, n: int) -> float: def quickMul(N): ans = 1.0 # 貢獻的初始值為 x x_contribute = x # 在對 N 進行二進位制拆分的同時計算答案 while N > 0: if N % 2 == 1: # 如果 N 二進位制表示的最低位為 1,那麼需要計入貢獻 ans *= x_contribute # 將貢獻不斷地平方 x_contribute *= x_contribute # 捨棄 N 二進位制表示的最低位,這樣我們每次只要判斷最低位即可 N //= 2 return ans return quickMul(n) if n >= 0 else 1.0 / quickMul(-n)