题目描述
说明:
-100.0 < x < 100.0
n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。
思路分析
暴力循环相乘时间复杂度O(N),但是考虑到特殊性我们可以降低复杂度进行计算。使用位运算。
代码展示
class Solution {
public:
double myPow(double x, int n) {
if(x == 1 || n == 0) return 1;
double ans = 1;
long num = n;
if(n < 0){
num = -num;
x = 1/x;
}
while(num){
if(num & 1) ans *= x;
x *= x;
num >>= 1;
}
return ans;
}
};
结果分析
时间复杂度 O(logN)
空间复杂度 O(1)