leetcode50-Pow(x,n)(부점수의 멱 연산 실현)

2866 단어
문제 설명:
Implement pow(x, n).
부동점 유형의 멱 연산을 실현하다.
문제 해결:
메서드1: 반복, O(n) 해법.
class Solution {
public:
    double myPow(double x, int n) {
        if(n==0)  
            return 1.0;  
        if(n<0)
        {
            if(n==INT_MIN)  
                return 1.0 / (pow(x,INT_MAX)*x);//!!!
            else
                return 1.0/pow(x,-n);
        }
        return x*pow(x,n-1);  
    }
};

방법2: 귀속, O(logn) 해법.
class Solution {
public:
    double myPow(double x, int n) {
        if(n==0)  
            return 1.0;  
        if(n<0)
        {
            if(n==INT_MIN)  
                return 1.0 / (myPow(x,INT_MAX)*x);//!!!
            else
                return 1.0/myPow(x,-n);
        }
        else
        {
            if(n%2==0)
            {
                double tmp=myPow(x, n>>1);
                return tmp*tmp;
            }
            else
            {
                double tmp=myPow(x, (n-1)>>1);
                return x*tmp*tmp;
            }
        }
    }
};

좋은 웹페이지 즐겨찾기