LeetCodeDay27|LeetCodeDay27 —— 3的幂

326. 3的幂 描述

  • 给出一个整数,写一个函数来确定这个数是不是3的一个幂。
  • 后续挑战:你能不使用循环或者递归完成本题吗?
思路
  1. 循环或递归:思路较简单。既可以1开始乘以3判断,也可以从n开始除以3判断。(但是比较耗时)
  2. 对数方法:一个数是3的次方,那么以3为底n的对数一定是个整数。实现上可利用换底公示。(换底公示)
  3. 如果题目是2的次方,可以用二进制的方法,2的N次幂的特点:仅有首位为1,其余各位都为0( n & n-1 == 0)
class Solution_326_01 { public: bool isPowerOfThree(int n) { if (n < 1) return false; while (n > 1) { int remain = n % 3; if (remain != 0) return false; n = n / 3; } return true; } }; class Solution_326_02 { public: bool isPowerOfThree(int n) { double tem = log10(n) / log10(3.0); if (int(tem) - tem == 0) // 判断一个数是否为整数的做法,值得学习 return true; else return false; } };

    推荐阅读