您的位置:首页 > 其它

leetcoder-50-Pow(x, n)

2015-07-09 16:46 85 查看


Pow(x, n)

可以直接用库函数pow(x,n)一步搞定,但明显这样就没意思了。

参考 快 速 幂 取 模

二分,复杂度为O(logn)

递归方法


class Solution {
public:
double myPow(double x, int n) {
if(n<0) return 1.0/myPow_1(x,-n);
else return myPow_1(x,n);
}
double myPow_1(double x,int n)
{
if(n==0) return 1.0;
double y=myPow_1(x,n/2); // 不能用n>>1 T_T   不知道什么原因
if(n&1) return y*y*x;
else return y*y;
}
};






位运算




class Solution {
public:
double myPow(double x, int n) {
if(n<0){
n=-n;
x=1.0/x;
}

double ans=1;
while(n){
if(n&1) ans=ans*x;
x=x*x;
n=n/2;
}
return ans;
}
};


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