灵感来源
- 保持更新,努力学习
- python脚本学习
解题思路
1. 逐位检查法:通过右移操作逐位检查每一位是否为1,统计计数
2. 位运算优化法:利用 n & (n-1) 操作消除最低位的1,减少循环次数
3. 内置函数法(仅适用于部分语言):直接使用语言内置的位计数函数
def hammingWeight(n: int) -> int:
count = 0
while n:
# 消除最低位的1
n &= n - 1
count += 1
return count
逐行解释
def hammingWeight(n: int) -> int:
# 定义计数器,用于统计二进制中1的个数
count = 0
# 当n不为0时,循环继续(因为当所有1都被消除后,n会变为0)
while n:
# 核心操作:n & (n-1) 会消除n的二进制表示中最低位的1
# 例如:n=1010(二进制),n-1=1001,两者按位与结果为1000,最低位的1被消除
n &= n - 1
# 每消除一个1,计数器加1
count += 1
# 最终返回1的个数
return count