LC-50 Pow(x, n)

Implement pow(x, n).

123^10 = (1232)5
123^5 = 123*(1232)2
time complexity O(logn) if multiply operation is O(1)

// iterative 
// Time O(logn)
public class Solution {
    public double myPow(double x, int n) {
        if(n == 0) {
            return 1;
        }
        
        if(n < 0) {
            n = -n;
            x = 1 / x;
        }
        
        double result = 1;
        while(n > 0){
            //n is odd
            if(n & 1) {
                result *= x;
            }
            
            x *= x;
            n >>= 1;
        }
        
        return result;
    }
}
// recursion
// time log(n)
public class Solution {
    public double pow(double x, int n) {
        if(n == 0)
            return 1;
        if(n<0){
            n = -n;
            x = 1/x;
        }
        return (n%2 == 0) ? pow(x*x, n/2) : x*pow(x*x, n/2);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容