Leetcode演算法Java全解答--50. Pow(x, n)
阿新 • • 發佈:2018-12-10
Leetcode演算法Java全解答–50. Pow(x, n)
文章目錄
題目
實現 pow(x, n) ,即計算 x 的 n 次冪函式。
說明:
-100.0 < x < 100.0
n 是 32 位有符號整數,其數值範圍是 [−231, 231 − 1] 。
示例 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
想法
結果
// TODO
總結
// TODO
程式碼
我的答案
public double myPow(double x, int n) { if(n == 0) return 1; if(n == 1) return x; int t = n / 2; if(n < 0) { t = -t; x = 1 / x; } double res = myPow(x, t); if(n % 2 == 0) return res * res; return res * res * x; }
大佬們的答案
public class Solution { public double myPow(double x, int n) { int m = n < 0 ? -n - 1 : n; //如果是n負數,要避免n=<span style="font-family: Arial, Helvetica, sans-serif;">-2147483648</span><span style="font-family: Arial, Helvetica, sans-serif;">溢位</span> double p = 1; for(double q = x; m > 0; m /= 2) { if((m & 1) != 0) p *= q; //一旦該位為1,那麼將q乘入p中 q *= q; //m每次除2,q就要變為平方 } return n < 0 ? 1 / p / x : p; } }
測試用例
其他
程式碼託管碼雲地址:https://gitee.com/lizhaoandroid/LeetCodeAll.git
檢視其他內容可以點選專欄或者我的部落格哈:https://blog.csdn.net/cmqwan
“大佬們的答案” 標籤來自leetcode,侵權請聯絡我進行刪改
如有疑問請聯絡,聯絡方式:QQ3060507060