一天一道LeetCode
本系列文章已全部上傳至我的github,位址:ZeeCoder‘s Github
歡迎大家關注我的新浪微網誌,我的新浪微網誌
歡迎轉載,轉載請注明出處
(一)題目
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?
(二)解題
題目大意:判斷一個是不是3的n次方。
解題思路:很容易就想到将該數每次都除以3,如果整除則繼續除,直到等于1就表示是3的n次方,否則就不是。
class Solution {
public:
bool isPowerOfThree(int n) {
int num=n;
while(num> && num%==) //整除
num/=;
return num==;
}
};
但是題目中提到,能不能不用循環或者遞歸來解題。可是想了半天都沒有想到,無奈隻能求助百度了。
在int範圍内的3的n次方最大為3的19次方1162261467,如果num時3的n次方數的話,一定能被1162261467整除。
于是有下面的代碼:
class Solution {
public:
bool isPowerOfThree(int n) {
return n>?(%n==?true:false):false;
}
};
還有的方法就是列舉法,也就19個數,判斷跟這19個數中任意一個相不相等即可。