第 26 日:数值的整数次方
题目链接:https://leetcode-cn.com/problems/shu-zhi-de-zheng-shu-ci-fang-lcof/
题目
解题
第一时间我想的是这样正常的求解(xxx…*x),可是提交后发现:
由于乘的次数过多超出了时间限制
-
快速幂
解题参考:
k神的解题思路
详细代码如下:
class Solution {
public double myPow(double x, int n) {
if(x==0) return 0;
double res=1.0;
long g=n;//防止溢出
if(g<0){
x=1/x;
g=-g;
}
while(g>0){
//判断g二进制形式的第一位是否为1
if((g&1)==1) res*=x;
x=x*x;
g=g>>1;//右移
}
return res;
}
}