实现 pow(x, n) ,即计算 x 的 n 次幂函数。
思路1:xn,将n表示成2进制数,11 = 1*23+0*22+1*21+1*20, 原来我们求x11需要将x连乘11次,而通过二进制我们只需要4次,即时间复杂度简化为log(n)。
class Solution {
public double myPow(double x, int n) {
double ans = 1;
boolean flag = false;
long nn = n;
if(n <0){
nn = n;
nn = -nn; // 由于直接取n的相反数会造成数组越界问题,python则不会
}
while(nn != 0){
if((nn&1)==1){
ans *= x;
}
x *=x;
nn = nn>>1;
}
if(n <0){
return 1/ans;
}
return ans;
}
}