由于要求空间复杂度为常数,所以需要使用快速幂。以base^19为例,19对应的二进制数为10011,base^19可以分解成base^16 * base^2 * base^1,16、2、1都是2的整数次幂,可以通过base *= base快速得到。
class Solution {
public:
double Power(double base, int exponent) {
if (exponent == 0) return 1.0;
if (base == 0) return 0;
bool ism = false;
if (exponent < 0) {
ism = true;
exponent = -exponent;
}
double res = 1;
while (exponent) {
if (exponent & 1) {
res *= base;
}
base *= base;
exponent >>= 1;
}
return ism? 1.0 / res: res;
}
};

京公网安备 11010502036488号