0342. 4的幂
大约 1 分钟
---
0342. 4的幂
- 标签:位运算、递归、数学
- 难度:简单
题目链接
题目大意
给定一个整数 ,判断 是否是 的幂次方,如果是的话,返回 True。不是的话,返回 False。
解题思路
通过循环可以直接做。但有更好的方法。
如果是 的幂次方,那么 肯定是 的幂次方, 的幂次方二进制表示只含有一个 ,可以通过 将 的最后位置上 的 置为 ,通过判断 是否满足 来判断 是否是 的幂次方。
若根据上述判断,得出 是 的幂次方,则可以写为: 或者 。如果 是 的幂次方,则 。
下面来看一下 、 的情况:
则如果 ,则 为 的幂次方。
代码
class Solution:
def isPowerOfFour(self, n: int) -> bool:
return n > 0 and (n & (n-1)) == 0 and (n-1) % 3 == 0