题目
思路
- 主要使用二分法来优化时间复杂度
- 采取了两种方法嵌套的方式
- 需要注意pow()方法中指数的奇偶性,为此分为两种情况讨论
代码
class Solution {
public double myPow(double x, int n) {
if (x == 0){
return 0;
}
if (x == 1 || n == 0){
return 1;
}
if (n == Integer.MIN_VALUE){
return myPow(x, n + 1) / x;
}
double ans = pow(x, (n > 0 ? n : -n));
if (n < 0){
ans = 1 / ans;
}
return ans;
}
private double pow(double x, int exp) {
if (exp == 1){
return x;
}
double midAns = pow(x, exp / 2);
if (exp % 2 == 0) {
return midAns * midAns;
}
else {
return midAns * midAns * x;
}
}
}
代码执行通过