[lintcode medium]Pow(x, n)

Implement pow(x, n).

Note

You don't need to care about the precision of your answer, it's acceptable if the expected answer and your answer 's difference is smaller than 1e-3.

Challenge

O(logn) time

一开始,直接做的,复杂度O(n)

public class Solution {
    /**
     * @param x the base number
     * @param n the power number
     * @return the result
     */
    public double myPow(double x, int n) {
        // Write your code here
        double res=1;
        if(n==0) return res;
        if(n<0)
        {
            int digit=Math.abs(n);
            for(int i=1;i<=digit;i++)
            {
              res=x*res;
            }
            
            res=1/res;
            
        }
        else{
        for(int i=1;i<=n;i++)
        {
            res=x*res;
        }
        }
        return res;
    }
}

 

 

复杂度O(logN)

 

public class Solution {
    /**
     * @param x the base number
     * @param n the power number
     * @return the result
     */
    public double myPow(double x, int n) {
        // Write your code here
        double res=1;
        if(n==0) return 1;
        if(n<0)
        {
            n=-n;
            x=1/x;
        }
        while(n>0)
        { 
            if(n%2==1)
            {
                res*=x;
            }
            n=n/2;
            x=x*x;
        
        }
        return res;
    }
}

 

posted on 2016-01-06 06:51  一心一念  阅读(165)  评论(0编辑  收藏  举报

导航