方法一:快速幂:时间O(logn),空间O(1)
题解:
- 注重细节:0 和 1 的 n 次方都是0和1
- 正常循环求幂的时间复杂度是O(n)
- 二分法求幂可将时间降到O(logn)
class Solution {
public:
double myPow(double x, int n)
{
if (x == 0.0 || x == 1.0)
return x;
long exp = n;
if (n < 0)
{
x = 1 / x;
exp = -exp;
}
double res = 1;
while (exp)
{
if (exp & 1)
{
res *= x;
}
x *= x;
exp >>= 1;
}
return res;
}
};