劍指Offer 12 數值的整數次方(快速冪)

2021-10-03 12:56:02 字數 897 閱讀 4054

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。

保證base和exponent不同時為0

像這種求 a

na^n

an的題目,第一時間想到的必須是快速冪,時間複雜度 o(l

ogn)

o(logn)

o(logn

) 妥妥的,別再用那種 o(n

)o(n)

o(n)

演算法了。

如果不會快速冪的小夥伴,推薦看看這篇文章: 數論基礎之快速冪(詳細教程)。

當然,這道題還沒有那麼簡單,和我們平時做的數論題目不一樣的是,這裡的 n

nn 有可能是負數

設 n

nn 為正數,則 −n-n

−n為負數,我們就可以做如下簡單處理:

a −n

=(an

)−

1a^=(a^n)^

a−n=(a

n)−1

我們先求出 ans

=a∣n

∣ans=a^

ans=a∣

n∣:**如下:

public

class

solution

base *= base;

n /=2;

}return exponent >

0? ans :(1

/ ans);}

}

如果只是為了通過的話,你也可以用下面這種沒有靈魂的寫法:

public

class

solution

}

如果本文對你有所幫助,要記得點讚哦~

劍指Offer (12)數值的整數次方

題目描述 給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。實現如下 方法一 迴圈 此題不需要考慮計算後值溢位的情況,即不存在大數情況 異常情況 底數為0時 0.0 指數為0時 1.0 數學定義 指數為負數時,需要考慮先計算指數絕對值的結果...

劍指offer 12 數值的整數次方

給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。1 對數字的預處理,比如,0的負數次方等 2 提高計算n的m次方的效率方法一 遞迴。利用公式 ab b 2 0 ab 2 ab 2 a b 1 2 a b 1 2 aclass soluti...

劍指Offer 12 數值的整數次方

description給定乙個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。用divide conquer的思路可以每次平方,最後堆起來得到答案。最開始的時候我搞不太清exp 0,1這種情況怎麼合併,所以就單獨分了出來。c double pow...