leetcode 326. 3的冪指數
阿新 • • 發佈:2018-12-15
給定一個整數,寫一個函式來判斷它是否是 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 的冪的最大數 } }