【leetcode】劍指 Offer 16. 數值的整數次方
實現函式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] 。
思路:本題涉及的知識點就是快速冪的計算:某個數x 的n次方,根據n是偶數還是奇數進行拆分,如果是偶數的話,則是x的n/2次方的平方,如果是奇數的話,則是x的n/2次方的平方再乘以x, 如此使用遞迴或者迭代迴圈log(n)次即可。在本題中需要考慮的是指數為負數的情況,可以將指數變成正數,將底數變成原來的倒數即可。程式碼如下:
class Solution {
public double myPow(double x, int n) {
if(x == 0){
return 0;
}
long b = n;
if(b < 0){
x = 1/x;
b = -b;
}
double ans = 1.0;
while(b > 0){
if((b & 1) == 1){
ans = ans * x;
}
x = x * x;
b = b >> 1;
}
return ans;
}
}
相關文章
- 劍指offer面試題11 數值的整數次方面試題
- 【劍指offer】字串轉整數字串
- 劍指Offer 表示數值的字串字串
- 《劍指offer》:[54]表示數值的字串字串
- 劍指Offer系列之「表示數值的字串」字串
- 《劍指offer》:[49]把字串轉化成整數字串
- LeetCode|劍指 Offer 49.醜數LeetCode
- 《Leetcode of December》劍指 Offer 67. 把字串轉換成整數LeetCode字串
- 劍指offer(Java版)--將字串轉換為整數Java字串
- 劍指offer——把字串轉換成整數C++字串C++
- Leetcode 劍指 Offer 40. 最小的k個數LeetCode
- 【演算法詳解】求解數值的整數次方演算法
- 【劍指Offer】調整陣列順序使奇數位於偶數前面陣列
- 力扣 - 劍指 Offer 67. 把字串轉換成整數力扣字串
- Leetcode劍指offer(八)LeetCode
- 【劍指offer】把陣列排成最小的數陣列
- Leetcode 劍指 Offer 03. 陣列中重複的數字LeetCode陣列
- leetcode *劍指 Offer 47. 禮物的最大價值LeetCode
- 劍指 Offer 21. 調整陣列順序使奇數位於偶數前面陣列
- 劍指offer:旋轉陣列的最小數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 【劍指offer】數字在排序陣列中出現的次數排序陣列
- 【Algorithm】《劍指offer》面試題32----從1到n整數中1出現的次數Go面試題
- 劍指offer面試題14 調整陣列順序使奇數位於偶數前面面試題陣列
- 【劍指offer】調整陣列順序陣列
- 《劍指offer》:[38]數字在排序陣列中出現的次數排序陣列
- 【劍指offer】二進位制中1的個數
- 劍指Offer--陣列中重複的數字陣列
- 劍指Offer-34-把陣列排成最小的數陣列
- 劍指offer——把陣列排成最小的數C++陣列C++
- 劍指offer-轉陣列的最小數字-php陣列PHP
- 《劍指offer》:[51]陣列中的重複數字陣列
- 《劍指offer》:[64]資料流中的中位數
- 演算法學習記錄十(C++)--->數值的整數次方演算法C++
- Leetcode 劍指 Offer 39. 陣列中出現次數超過一半的數字LeetCode陣列
- 劍指Offer-把陣列中的數排成一個最小的數陣列
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java