[Leedcode][JAVA][第50题][Pow(x, n)][快速幂][分治][转换类型]
生活随笔
收集整理的這篇文章主要介紹了
[Leedcode][JAVA][第50题][Pow(x, n)][快速幂][分治][转换类型]
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【問題描述】[第50題][Pow(x, n)][中等]
實現 pow(x, n) ,即計算 x 的 n 次冪函數。輸入: 2.10000, 3 輸出: 9.26100 示例 3:輸入: 2.00000, -2 輸出: 0.25000 解釋: 2-2 = 1/22 = 1/4 = 0.25【解答思路】
1.快速冪
時間復雜度:O(logN) 空間復雜度:O(1)
Java 代碼中 int32 變量 n \in [-2147483648, 2147483647]n∈[?2147483648,2147483647] ,因此當 n = -2147483648n=?2147483648 時執行 n = -nn=?n 會因越界而賦值出錯。解決方法是先將 nn 存入 long 變量 bb ,后面用 bb 操作即可。
class Solution {public double myPow(double x, int n) {if(x == 0.0f) return 0.0d;long b = n;double res = 1.0;if(b < 0) {x = 1 / x;b = -b;}while(b > 0) {if((b & 1) == 1) res *= x;x *= x;b >>= 1;}return res;} }2. 逐次相乘
特殊
- n == -2147483648 結果 分情況
- x == -1 /1 結果= 本身
時間復雜度:O(N) 空間復雜度:O(1)
3.遞歸
時間復雜度:O(logN) 空間復雜度:O(1)
【總結】
1.位運算 判相等異或^ 取位判奇偶與&1 置位或|1
2. int所表示的范圍就是 -2147483648 到 2147483647(2^31-1),注意 -2147483648邊界的考慮
補碼「按位取反,末位加 1 」
3.類型默認值
4.自動轉換類型 &強制轉換類型
轉載鏈接:https://leetcode-cn.com/problems/powx-n/solution/50-powx-n-kuai-su-mi-qing-xi-tu-jie-by-jyd/
參考鏈接:https://leetcode-cn.com/problems/powx-n/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-by–15/
參考鏈接:https://www.runoob.com/java/java-basic-datatypes.html
總結
以上是生活随笔為你收集整理的[Leedcode][JAVA][第50题][Pow(x, n)][快速幂][分治][转换类型]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: j2ee 简单网站搭建:(十)jquer
- 下一篇: 芒果db怎么连mysql_MongoDB