1.题目
2. 题解
(1)暴力
- 分为整数次方和负数次方两种情况
- 然后果然超时了
class Solution {
public double myPow(double x, int n) {
double temp = 1.0;
long b = n;
while (b != 0.0) {
if (b > 0.0) { //正数次方
b--;
temp = temp * x;
} else { //负数次方
b++;
temp = temp / x;
}
}
return temp;
}
}
(2)快速幂
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) //取余数 n % 2 等价于 判断二进制最右位n & 1
res *= x;
x *= x;
b >>= 1; // b = b / 2
}
return res;
}
}