實現函式double power(double base, int exponent),求base的exponent次方。不得使用庫函式,同時不需要考慮大數問題。
示例 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] 。
python
# 思路:
# 考察快速乘方與**全面性;採用二分法,注意運用公式(a^n=a^(n/2)*a^(n/2),n為偶數;a^n=a^((n-1)/2)*a^((n-1)/2*a),n為奇數)
# 複雜度:
# o(logn)
class
solution
:def
mypow
(self, x:
float
, n:
int)
->
float
:if x==0:
return
0# 底數為0
res =
1if n<
0: x,n =
1/x,
-n # 指數小於0
while n:
if n&
1: res*=x # 位運算比算術運算快,n&1等價於n%2
x *= x
n>>=1
# 等價於n//2
return res
c++class
solution
while
(num)
return res;}}
;
劍指Offer 16 數值的整數次方
實現函式double power double base,int exponent 求base的exponent次方,不得使用庫函式。同時不需要考慮大數問題。看到乘方,自然想到二分加速的方法。但是這個題關注的不是速度,而是考慮問題的全面性。比如幾個邊界情況,base 0,exp 0 的時候。時間複雜...
劍指offer16 數值的整數次方
題目 實現函式double power double base,int exponent 求base的exponent次方,不得使用庫函式,同時不需要考慮大數問題。一 第一種方法大體分為以下四種情況 1 底數為0,則返回0 2 底數不為0,若指數為0,則返回1 3 底數不為0,若指數為正數,呼叫po...
劍指offer 16 數值的整數次方
保證base和exponent不同時為0 分析 注意考慮特殊情況,當底數為0,如果指數是正整數,則可以返回1,如果底數為0,指數是負整數,那麼就會出錯,而且如果底數不是0,指數是負整數,則返回的應該是底數和正整數運算結果的倒數。因此要考慮齊全。double powerwithunsignedexpo...