LeetCodeDay27|LeetCodeDay27 —— 3的幂
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;
}
};
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术