leetcode326. 3 的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x
示例 1:
输入:n = 27
输出:true
示例 2:
输入:n = 0
输出:false
示例 3:
输入:n = 9
输出:true
示例 4:
输入:n
题目分析
给定一个整数 n
,判断它是否是3的幂次方。这个问题可以通过循环和取余操作来解决。
算法步骤
- 如果
n
等于0,返回false
。 - 如果
n
等于1,返回true
。 - 当
n
不等于3时,进行循环:- 计算当前
n
除以3的余数t
。 - 如果
t
不为0,返回false
。 - 将
n
更新为n
除以3的结果。
- 计算当前
- 如果循环结束后
n
等于3,返回true
;否则返回false
。
算法流程
具体代码
class Solution {
public:
bool isPowerOfThree(int n) {
if(n==0) return false;
if(n==1) return true;
while(n!=3)
{
int t=n%3;
if(t) return false;
n/=3;
}
return true;
}
};
算法分析
- 时间复杂度: O(log3(n)),因为每次循环
n
都会减少约三分之一的大小。 - 空间复杂度: O(1),因为只需要常数级别的额外空间。
- 易错点: 在循环中,需要确保
n
是正数,并且每次更新n
时都进行了取余操作。
相似题目
题目 | 链接 |
---|---|
326. 3的幂 | https://leetcode.cn/problems/power-of-three/ |
231. 2的幂 | https://leetcode.cn/problems/power-of-two/ |
342. 4的幂 | https://leetcode.cn/problems/power-of-four/ |