news 2026/5/11 8:19:35

LeetCode 比特位计数题解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode 比特位计数题解

LeetCode 比特位计数题解

题目描述

给定一个非负整数 num,返回一个数组 answer,其中 answer[i] 表示 i 的二进制表示中 1 的个数。

示例

输入:num = 2
输出:[0,1,1]

输入:num = 5
输出:[0,1,1,2,1,2]

解题思路

方法:动态规划 + 位运算

思路

  • 使用动态规划和位运算来解决这个问题。
  • 对于每个数字 i,最低的设置位(lowbit)是 i & (-i)。
  • i 中 1 的个数等于 i 去掉最低设置位后的数字中 1 的个数加 1。
  • 即:count[i] = count[i >> 1] + (i & 1)

复杂度分析

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

代码实现

方法:动态规划 + 位运算

# 比特位计数(动态规划 + 位运算) def count_bits(num): result = [0] * (num + 1) for i in range(1, num + 1): result[i] = result[i >> 1] + (i & 1) return result # 测试 def test_count_bits(): num = 2 print(count_bits(num)) # 输出:[0, 1, 1] num = 5 print(count_bits(num)) # 输出:[0, 1, 1, 2, 1, 2] if __name__ == "__main__": test_count_bits()

方法:Brian Kernighan 算法

# 比特位计数(Brian Kernighan 算法) def count_bits_bk(num): result = [] for i in range(num + 1): count = 0 n = i while n: n &= (n - 1) count += 1 result.append(count) return result # 测试 def test_count_bits_bk(): num = 5 print(count_bits_bk(num)) # 输出:[0, 1, 1, 2, 1, 2] if __name__ == "__main__": test_count_bits_bk()

测试用例

测试用例 1:num=2

输入:num = 2
输出:[0,1,1]

测试用例 2:num=5

输入:num = 5
输出:[0,1,1,2,1,2]

总结

比特位计数是一个经典的位运算问题,它可以通过动态规划和位运算来高效地解决。

动态规划 + 位运算的核心思想是:利用已计算的结果,计算当前数字的 1 的个数。

掌握位运算的使用方法,对于解决类似的问题非常重要。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 8:09:35

AI代理协作平台Run402:基于看板与微支付的自动化任务管理

1. 项目概述:一个面向AI代理的协作与支付平台最近在开源社区里,我注意到一个挺有意思的项目,叫musfoner/run402。乍一看,它的描述非常简洁,甚至可以说有些“神秘”,只有“yonathan estudio”几个字。但结合…

作者头像 李华
网站建设 2026/5/11 8:09:33

TeamHero项目全栈解析:React、Node.js与实时协作技术实战

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫“TeamHero”,作者是sagiyaacoby。乍一看这个名字,你可能会联想到团队协作、英雄榜或者某种团队管理工具。没错,这个项目的核心定位,就是一款轻量级、自…

作者头像 李华
网站建设 2026/5/11 8:06:35

XMem高级应用:集成Track Anything和DEVA的开源生态探索

XMem高级应用:集成Track Anything和DEVA的开源生态探索 【免费下载链接】XMem [ECCV 2022] XMem: Long-Term Video Object Segmentation with an Atkinson-Shiffrin Memory Model 项目地址: https://gitcode.com/gh_mirrors/xm/XMem XMem作为ECCV 2022提出的…

作者头像 李华