LeetCodeDay27 —— 3的幂
2018-05-05 本文已影响0人
GoMomi
326. 3的幂
描述
- 给出一个整数,写一个函数来确定这个数是不是3的一个幂。
- 后续挑战:你能不使用循环或者递归完成本题吗?
思路
- 循环或递归:思路较简单。既可以1开始乘以3判断,也可以从n开始除以3判断。(但是比较耗时)
- 对数方法:一个数是3的次方,那么以3为底n的对数一定是个整数。实现上可利用换底公示。(换底公示)
- 如果题目是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;
}
};