解题思路:
分治 快速幂
Java中向下取整n/=2即可
需要结合下图理解,算法就是实现的该过程
java
class Solution {
public double myPow(double x, int n) {
if(x == 0.0f) return 0.0d;
long b = n;
double res = 1.0;
//例如:2^-5=(1/2)^5
if(b < 0) {
x = 1 / x;
b = -b;
}
//分奇偶讨论,为奇数时要多乘一次x
while(b > 0) {
//&与运算,例如:5&1=(101&001)=001=1
if((b & 1) == 1) res *= x;
//x=x^2
x *= x;
//指数地板除2(b/=2也可以)
b >>= 1;
}
return res;
}
}