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?
Credits:
Special thanks to @dietpepsi for adding this problem and creating all test cases.
Subscribe to see which companies asked this question
class Solution {
public:
/*algorithm
1)based on n, get r = n%3 ,d = n/3
2)check whether r != 0, if it is, return false
else, n = d, go to 1 step
3)return true
*/
bool isPowerOfThree(int n) {
if(n==0)return false;
if(n==1)return true;
return (n%3)==0 && isPowerOfThree(n/3);
}
};
class Solution {
public:
/*algorithm
just as power of two,
if we regard n as 3 counting system
1=0c1,3=0c1<<1,9=0c1<<2,27=0c1<<3
two bit can be used to represent it
*/
bool isPowerOfThree(int n) {
for(int base = 1;base < n+1;base *= 3){
if(base == n)return true;
}
return false;
}
};