https://leetcode.com/problems/powx-n/
两个坑:
(1)次方可以是赋值,解决方法是1/x
(2)注意啊,如果n为负数的时候 右移运算,为了保持符号,符号位自动填充1,会TLE
另外还有坑 负的最大值比正的最大值大,所以一定转换long long啊
class Solution {
public:
double myPow(double x, int n) {
double ret = 1.0, xx;
long long nn = n;
if(nn<0)xx=1.0/x, nn=-nn;
else xx=x;
while(nn) {
if(nn&1) {
ret *= xx;
}
xx *= xx;
nn >>= 1;
}
return ret;
}
};