美文网首页
50. Pow(x, n)

50. Pow(x, n)

作者: Al73r | 来源:发表于2017-10-10 10:57 被阅读0次

题目

Implement pow(x, n).

分析

最基本的快速幂。

实现

class Solution {
public:
    double myPow(double x, int m) {
        double ans=1;
        int sign = 1;
        long long n = m;
        if(n<0){ x=1.0/x; n=-n;}
        while(n>0){
            if(n%2) ans*=x;
            x *= x;
            n /= 2;
        }
        return ans;
    }
};

思考

处理指数是负数时需要注意。一个是abs(INT_MIN)>abs(INT_MAX),所以需要使用long long类型来保存指数。另一个是负数时取结果的倒数,但是这样不够优雅。更好的方法是负数的时候直接对底数x取倒数即可。

相关文章

网友评论

      本文标题:50. Pow(x, n)

      本文链接:https://www.haomeiwen.com/subject/kgcvyxtx.html