1. 题目来源
2. 题目解析
前导题:
考查快速幂的思想,也可理解成倍增的思想。板子很好用,快速幂也很常用!
时间复杂度:
O
(
l
o
g
n
)
O(logn)
O(logn)
空间复杂度:
O
(
1
)
O(1)
O(1)
代码:
// 1.00000
// -2147483648 不讲 5 德
// n = abs(n);
class Solution {
public:
double myPow(double x, int n) {
typedef long long LL;
bool is_minus = n < 0;
double res = 1;
LL k = abs(n);
while (k) {
if (k & 1) res *= x;
x *= x;
k >>= 1;
}
if (is_minus) res = 1 / res;
return res;
}
};