首页 > 其他 > 详细

LeetCode:Pow(x, n)

时间:2014-06-06 18:39:38      阅读:394      评论:0      收藏:0      [点我收藏+]

要求

Implement pow(xn)

1. 特例

  • n=0, 直接返回1
  • n=1, 直接返回x
  • n<0,返回 1/pow(x,-n)

2. 优化

bubuko.com,布布扣
index = (n > 0 ? n : -n);
pow(x, index) = (index %2==1 ? pow(x, index/2)*x : pow(x, index/2));
bubuko.com,布布扣

 继续优化

bubuko.com,布布扣
pow(x, index) = (index %2==1 ? pow(x, index>>1)*x : pow(x, index>>1));
bubuko.com,布布扣

 

3. 参考代码

bubuko.com,布布扣
 class Solution 
 {
    public:
    double pow(double x, int n) 
    {
        int index = n;
        if (n == 0)
            return 1;
        if (n == 1)
            return x;
        if (n < 0)
            index = -n;
        double rev = index%2==0 ? pow(x*x, index>>1) : pow(x*x, index>>1)*x;
        if (n < 0)
            return 1 / rev;
        else
            return rev;
    }
 };
bubuko.com,布布扣

 

LeetCode:Pow(x, n),布布扣,bubuko.com

LeetCode:Pow(x, n)

原文:http://www.cnblogs.com/kaituorensheng/p/3766209.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!