目录

力扣-2 的幂

🔗 题目链接

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true;否则,返回 false

如果存在一个整数 $x$ 使得 $n == 2^x$ ,则认为 $n$ 是 $2$ 的幂次方。

示例 1:
输入:n = 1
输出:true
解释:$2^0 = 1$
示例 2:
输入:n = 16
输出:true
解释:$2^4 = 16$
示例 3:
输入:n = 3
输出:false
示例 4:
输入:n = 4
输出:true
解释:$2^2 = 4$
示例 5:
输入:n = 5
输出:false

提示

  • $-2^{31} <= n <= 2^{31} - 1$

二进制表示

思路和算法

一个数 $n$ 是 $2$ 的幂,当且仅当 $n$ 是正整数,并且 $n$ 的二进制表示中仅包含 $1$ 个 $1$。1

1
2
def isPowerOfTwo(n: int) -> bool:
    return n > 0 and (n & (n - 1)) == 0

复杂度分析

  • 时间复杂度:$O(1)$。
  • 空间复杂度:$O(1)$。