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)。

本文介绍了一种高效判断整数是否为3的幂次方的方法。通过算法设计,实现了一个时间复杂度和空间复杂度均为O(1)的解决方案。示例包括27、0和45的判断结果。
528

被折叠的 条评论
为什么被折叠?



