50. Pow(x, n)

题目

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))