50. Pow(x, n)
Description
Implement pow(x, n).
就是实现幂函数。
Solution
最直观的想法是递归,每次x*pow(x, n-1),觉得会超时,没写。
然后想着循环,试了一下,超时。
考虑到n个x相乘式子的对称关系,每次循环x*=x,可以把复杂度降到O(logn)
Complexity analysis
O(logn)
Code
class Solution {
public:
double myPow(double x, int n) {
if (n < 0) {
x = 1/x;
n = -n;
}
// if (n == 0)
// return 1.0;
unsigned long long p = n; //long long 是重点!
double result = 1;
while (p) {
if (p & 1) {
result *= x;
}
x *= x;
p >>= 1;
}
return result;
}
};
Result