力扣刷題筆記:50.Pow(x, n)(二分法、普通和位運算兩種寫法,方法一樣,很好理解)
阿新 • • 發佈:2021-02-16
題目:
50、Pow(x, n)
實現 pow(x, n) ,即計算 x 的 n 次冪函式(即,xn)。
示例 1:
示例 2:
示例 3:
提示:
題解思路:
二分法,通過折半計算,每次把 n 減半,降低時間複雜度。
兩種寫法:
一、普通寫法。
二、位運算寫法。
注:其實都是一樣的意思,達到一樣的效果。速度也差不多
例如 n>>=1 等價於 n/=2 ; n%2 == 1 等價於 n&1 == 1(判斷是否為奇數)
題解python程式碼:
一、普通寫法
class Solution:
def myPow (self, x: float, n: int) -> float:
res = 1
if n < 0: x,n = 1/x,-n
while n: # 通過折半計算,每次把 n 減半,降低時間複雜度
if n%2 == 0:
x *= x
n /= 2
else:
res *=x
n -= 1
return res
二、位運算寫法
class Solution :
def myPow(self, x: float, n: int) -> float:
res = 1
if n < 0: x, n = 1 / x, -n
while n:
if n & 1: res *= x
x *= x
n >>= 1
return res
作者:a-qing-ge
連結:https://leetcode-cn.com/problems/powx-n/solution/er-fen-fa-pu-tong-xie-fa-yi-ji-wei-yun-s-cw8x/
來源:力扣(LeetCode)https://leetcode-cn.com/problems/powx-n/