LeetCodeDay27 —— 3的幂

2018-05-05  本文已影响0人  GoMomi

326. 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;
  }
};
上一篇 下一篇

猜你喜欢

热点阅读