您的位置:首页 > 其它

(算法分析Week3)Pow(x,n)[Medium]

2017-09-23 22:06 411 查看

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: