【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數值的整數次方-2
- 數值的整數次方
- 劍指Offer 表示數值的字串字串
- LeetCode|劍指 Offer 49.醜數LeetCode
- 《Leetcode of December》劍指 Offer 67. 把字串轉換成整數LeetCode字串
- 劍指Offer系列之「表示數值的字串」字串
- Leetcode 劍指 Offer 40. 最小的k個數LeetCode
- JZ-012-數值的整數次方
- 劍指offer(Java版)--將字串轉換為整數Java字串
- 劍指offer——把字串轉換成整數C++字串C++
- Leetcode劍指offer(八)LeetCode
- 劍指offer:輸入n個整數,找出其中最小的K個數。
- leetcode *劍指 Offer 47. 禮物的最大價值LeetCode
- Leetcode 劍指 Offer 03. 陣列中重複的數字LeetCode陣列
- 【劍指Offer】調整陣列順序使奇數位於偶數前面陣列
- 力扣 - 劍指 Offer 67. 把字串轉換成整數力扣字串
- 劍指offer第49題 醜數
- 劍指Offer-31-最小的K個數
- Leetcode 劍指 Offer 39. 陣列中出現次數超過一半的數字LeetCode陣列
- 劍指offer——斐波那契數列
- 劍指 Offer 21. 調整陣列順序使奇數位於偶數前面陣列
- 劍指offer:旋轉陣列的最小數字陣列
- 劍指offer 旋轉陣列的最小數字陣列
- 【Algorithm】《劍指offer》面試題32----從1到n整數中1出現的次數Go面試題
- LeetCode 劍指 Offer 05. 替換空格LeetCode
- 《劍指offer》JAVA題解,LeetCode評測JavaLeetCode
- LeetCode-劍指Offer刷題記錄LeetCode
- 劍指Offer--陣列中重複的數字陣列
- 劍指offer-轉陣列的最小數字-php陣列PHP
- 劍指Offer-34-把陣列排成最小的數陣列
- 【劍指offer】二進位制中1的個數
- 劍指offer——把陣列排成最小的數C++陣列C++
- 劍指Offer-把陣列中的數排成一個最小的數陣列
- 【LeetCode刷題(簡單程度)】劍指 Offer 57. 和為s的兩個數字LeetCode
- 劍指Offer-39-數字在排序陣列中出現的次數排序陣列
- 劍指 Offer 56 - I. 陣列中數字出現的次數陣列
- 劍指 Offer 44. 數字序列中某一位的數字
- 劍指OFFER-數字在升序陣列中出現的次數(Java)陣列Java