1. 程式人生 > 其它 >力扣刷題筆記:50.Pow(x, n)(二分法、普通和位運算兩種寫法,方法一樣,很好理解)

力扣刷題筆記:50.Pow(x, n)(二分法、普通和位運算兩種寫法,方法一樣,很好理解)

技術標籤:刷題筆記pythonleetcode

題目:

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/