灵感来源
- 保持更新,努力学习
- python脚本学习
2 的幂
解题思路
判断一个数是否为 2 的幂,核心在于理解 2 的幂的数学特性:
- 2 的幂在二进制中只有一个
1
(例如:2=10,4=100,8=1000)。 - 利用位运算可高效判断这一特性。
位运算(二进制中 1 的个数)
原理:使用内置函数 bit_count()
统计二进制中 1 的个数。
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
if n <= 0:
return False
# 2的幂的二进制中1的个数为1
return n.bit_count() == 1
逐行解释
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
# 处理边界情况:2的幂必须是正整数
if n <= 0:
return False
# 核心逻辑:2的幂的二进制形式为100...0(仅最高位为1)
# 例如:2=10, 4=100, 8=1000
# n-1的二进制形式为011...1(所有低位为1)
# 例如:1=01, 3=011, 7=0111
# 当n为2的幂时,n & (n-1) 结果为0
# 例如:1000 & 0111 = 0000
return (n & (n - 1)) == 0