题目:
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27 输出: true
示例 2:
输入: 0 输出: false
示例 3:
输入: 9 输出: true
示例 4:
输入: 45 输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
解题思路:
- 思路1:对n进行取3余数,然后除以三,最后检查这个数字是否等于1。
- 思路2:寻找int型里面能被整除3的最大值,最后检查这个数字能否整除这个最大值。
代码实现:
循环版本:
class Solution { public boolean isPowerOfThree(int n) { while (n > 1) { if (n % 3 != 0) return false; n /= 3; } return n == 1; } }
进阶版本:
class Solution { public boolean isPowerOfThree(int n) { if (n <= 0) return false; return (1162261467 % n) == 0; } }