Leetcode 326. Power of Three

關關的刷題日記發表於2018-01-08

題目的意思是給定一個整數,判斷它是否是3的冪。能否不用遞迴或者迴圈來解決這個問題?

 

方法1:寫了個遞迴的版本。

class Solution {
public:
    bool isPowerOfThree(int n) {
        return n==1 || n>0 && n%3==0 && isPowerOfThree(n/3);
    }
};

方法2:我們可以找到INT_MAX以內的最大的3的冪=3^(int)log3INT_MAX =  1162261467,如果一個數是3的冪,那麼它一定可以被1162261467整除。但是注意這種方法只是對素數有效。

class Solution {
public:
    bool isPowerOfThree(int n) {
        return (n>0 && (1162261467%n==0));
    }
};


相關文章