3的幂
题目描述
给定一个整数,写一个函数来判断它是否是 3 的幂次方。
示例 1:
输入: 27
输出: true
示例 2:
输入: 0
输出: false
示例 3:
输入: 45
输出: false
进阶:
你能不使用循环或者递归来完成本题吗?
解题思路
个人AC
class Solution {
public boolean isPowerOfThree(int n) {
if (n < 1) return false;
while (n % 3 == 0) {
n /= 3;
}
return n == 1;
}
}
最优解
class Solution {
public boolean isPowerOfThree(int n) {
// int范围内的3的幂最大是1162261467
return n > 0 && 1162261467 % n == 0;
}
}
时间复杂度: O ( 1 ) O(1) O(1);
空间复杂度: O ( 1 ) O(1) O(1)。