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取倒数即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • LeetCode 50 Pow(x, n) Implement pow(x, n). 遇到math类的题,比如po...
    ShuiLocked阅读 2,032评论 1 2
  • 问题 Implement pow(x, n). 例子 pow(8, 8)16777216 分析 二分法快速幂 要点...
    RobotBerry阅读 439评论 0 0
  • 题目描述 Implement pow(x, n).实现x的n次方计算 问题分析 暴力求解 考虑极端输入:2.1 结...
    一里山阅读 336评论 0 0
  • Implement pow(x, n). Hide Company TagsLinkedIn Google Blo...
    番茄晓蛋阅读 210评论 2 1
  • 再过几个时辰,2015年就过去了,整理不做总结,不做展望,只是记录一下这平凡一年中的新鲜事,给以后回忆时留点线索。...
    johnnyOnRoad阅读 216评论 0 0