Leetcode題解之數學問題(3) 3的冪
阿新 • • 發佈:2018-12-02
題目:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/25/math/62/
題目描述:
給定一個整數,寫一個函式來判斷它是否是 3 的冪次方。
示例 1:
輸入: 27
輸出: true
示例 2:
輸入: 0
輸出: false
示例 3:
輸入: 9
輸出: true
示例 4:
輸入: 45
輸出: false
進階:
你能不使用迴圈或者遞迴來完成本題嗎?
思路:如果是3的冪 一定能被3除剩下1.就將n除到底。
程式碼:
class Solution { public boolean isPowerOfThree(int n) { if(n==1){ return true; }else if(n==0){ return false; }else{ while(n%3==0&&n/3!=0){ n=n/3; } if(n==1){ return true; }else{ return false; } } } } //別人的程式碼: class Solution { public boolean isPowerOfThree(int n) { if(n<1) return false; while(n%3==0) n/=3; return n==1; } } //另外的方法:遞迴 class Solution { public boolean isPowerOfThree(int n) { double result = Math.log10(n)/Math.log10(3); return (result==(int)(result))?true:false; } }