目录
题目链接
思路分析
我的题解
题目链接
326. 3 的幂
思路分析
思路1:试除法
通过判断当前n是否是3的倍数来决定是否继续循环,如果不是,说明这个数一定不是3的幂;如果是,那么将此数除以3再继续循环,直到最后n小于3时,如果此时n为1说明上次的n一定是3,进而得知此数就是3的幂。
思路2:判断是否为范围内3的最大次幂的约数。
话不多说,看代码。如果对细节不明白可以参考这篇博客的思路二(思路基本一致)
LeetCode_231. 2 的幂_小白麋鹿的博客-CSDN博客https://yt030917.blog.csdn.net/article/details/129963903?spm=1001.2014.3001.5502
我的题解
class Solution {
public:bool isPowerOfThree(int n) {
/*思路1:试除法*//* while(n % 3 == 0 && n != 0) while(n && n % 3 == 0) //精简版n /= 3; return n == 1; //1也是3的幂(3^0 = 1)所以可以这么写 */
/*思路2:判断是否为范围内3的最大次幂的约数return n > 0 && 1162261467 % n == 0; */
/*思考3:打表(仅供娱乐)*/long long tmp;unordered_set<long long> tabel;for(tmp = 1; tmp < INT_MAX; tmp *= 3){tabel.insert(tmp);}return tabel.find(n) != tabel.end(); }};