1、题目描述
2、分析
这道题使用循环很容易能得到结果,只需要将这个数不停地除以3,最后判断迭代之后的商是否为1。但是题目中说可以不使用循环,那么就需要一点取巧的办法,题目中输入的是一个int型数据,那么int类型正数范围是0-2^31,这个范围内最大的3的次方数是1162261467,这样我们只需要判断这个数能不能被n整除即可。
3、代码
class Solution {
public:
bool isPowerOfThree(int n) {
while (n && n % 3 == 0) {
n /= 3;
}
return n == 1;
}
};
class Solution {
public:
bool isPowerOfThree(int n) {
return (n > 0 && 1162261467 % n == 0);
}
};
4、相关知识点
第二种方法的思路需要了解。