LeetCode -- Power of Three

2266 단어
Question:
Given an integer, write a function to determine if it is a power of three.
Follow up:Could you do it without using any loop/recursion?
 
Analysis:
정수를 제시하고 함수를 써서 그것이 3의 n차멱인지 아닌지를 판단한다.
주의: 순환하거나 귀속하지 않고 이 문제를 해결할 수 있습니까?
 
Solution1: Using Loop.
//Solution1: Loop
public boolean isPowerOfThree(int n) {
         if(n <= 0)
             return false;
         while(n > 1) {
             if(n % 3 != 0)
                 break;
             else 
                 n /= 3;
         }
         return n == 1;
}

 
Solution2: Using Recursion.
//Solution2: Recursion.
public static boolean isPowerOfThree(int n) {
         if(n <= 0)
             return false;
         if(n == 1)
             return true;
         if(n % 3 == 0)
             return isPowerOfThree(n/3);
         else return false;
}

 
Solution3: Using Log Function. (logab = logcb/logca)
    public boolean isPowerOfThree(int n) {
        if(n <= 0)
             return false;
         double log = Math.log10(n) / Math.log10(3);
         if(log - (int)log == 0)
             return true;
         else return false;
    }

좋은 웹페이지 즐겨찾기