天天看點

【一天一道LeetCode】#326. Power of Three 一天一道LeetCode

一天一道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個數中任意一個相不相等即可。