LeetCode|Day26|191. 位 1 的个数|Python刷题笔记
LeetCode|Day26|191. 位 1 的个数|Python刷题笔记
🗓️ 本文属于【LeetCode 简单题百日计划】系列
👉 点击查看系列总目录 >>
📌 题目简介
题号:191. 位 1 的个数
难度:简单
题目链接:点击跳转
🧾 题目描述
编写一个函数,接收一个无符号整数 n
,返回其二进制表示中 "1"
的个数。
这个问题通常被称为 Hamming Weight(汉明重量)。
示例 1:
输入:n = 11 (二进制为 00000000000000000000000000001011)
输出:3
解释:输入中有三个二进制位为 '1'。
示例 2:
输入:n = 128 (二进制为 00000000000000000000000010000000)
输出:1
💡 解法:位运算逐位统计
class Solution:def hammingWeight(self, n: int) -> int:count = 0while n:count += n & 1 # 取出最低位是否为1n >>= 1 # 右移一位,相当于整除2return count
🧠 我的理解
- 利用按位与运算
n & 1
判断最低位是否为1
; - 每次检查完后,将 n 右移一位,继续判断下一位;
- 不断累加直到
n
变为 0。
📌 基础语法复习:
n & 1
:按位与,判断最低位是否为 1;n >>= 1
:将整数右移 1 位,相当于除以 2;while n:
:当 n 不为 0 时循环;- 这种逐位遍历的方法是处理位运算问题的重要技巧。