1. 程式人生 > >leetcode 326. 3的冪指數

leetcode 326. 3的冪指數

給定一個整數,寫一個函式來判斷它是否是 3 的冪次方。

示例 1:

輸入: 27
輸出: true

示例 2:

輸入: 0
輸出: false

示例 3:

輸入: 9
輸出: true

示例 4:

輸入: 45
輸出: false

進階: 你能不使用迴圈或者遞迴來完成本題嗎?

思路一:直接用暴力破解的方法,迴圈 Math.pow(3,i),判斷結果是否和 n 相等

class Solution {
    public boolean isPowerOfThree(int n) {
        if(n == 0 ) return false;
        else if(n==1) return true;
       for(int i = 0;i <= 100;i++ ){
           if(Math.pow(3,i) == n){
               return true;
           }
       }
        return false;
    }
}

思路二:網上看別人的,使用對數的知識,如果 n 是 3 的冪的話,那麼以 3 為底的對數 N 為整數,那麼轉型 int 後與自身相減為 0 。

public static boolean isPowerOfThree(int n) {
        double temp = Math.log10(n) / Math.log10(3);   //使用換底公式解決
        return (temp - (int)(temp)) == 0?true:false;
    }

思路三:

class Solution {
    public boolean isPowerOfThree(int n) {
        return ( n>0 && 1162261467%n==0);    // 1162261467 為 int 型別中的 3 的冪的最大數
    }
}