目录
Given an integer, write a function to determine if it is a power of three.
Example 1:
Input: 27 Output: true
Example 2:
Input: 0 Output: false
Example 3:
Input: 9 Output: true
Example 4:
Input: 45 Output: false
Follow up:
Could you do it without using any loop / recursion?
我的解法
没注意到Follow up,用了循环
class Solution {
public:
bool isPowerOfThree(int n) {
if(n<1)
return false;
while(n>1){
if ((n%3)!=0)
return false;
else
n=n/3;
}
return true;
}
};
高票O(1)解法
public class Solution {
public boolean isPowerOfThree(int n) {
// 1162261467 is 3^19, 3^20 is bigger than int
return ( n>0 && 1162261467%n==0);
}