当前位置: 首页 > news >正文

力扣刷题(第七十天)

灵感来源 

- 保持更新,努力学习

- python脚本学习

比特位计数

解题思路

  1. 对于任意整数 x,其 1 的个数等于 x // 2 的 1 的个数加上 x % 2
  2. 状态转移方程:dp[x] = dp[x // 2] + (x % 2)
    class Solution:def countBits(self, n: int) -> List[int]:dp = [0] * (n + 1)for x in range(1, n + 1):# x // 2 对应 dp[x >> 1]# x % 2 对应 x & 1dp[x] = dp[x >> 1] + (x & 1)return dp

逐行解释

class Solution:def countBits(self, n: int) -> List[int]:# 创建结果数组,dp[x]表示数字x的二进制中1的个数# 初始时所有值都为0(因为dp[0]的1的个数为0)dp = [0] * (n + 1)# 遍历从1到n的每个数字for x in range(1, n + 1):# 关键状态转移方程:# 1. x >> 1 等价于 x // 2(右移一位,丢弃最低位)# 2. x & 1 等价于 x % 2(获取最低位的值)# 例如:# - 若x=5(二进制101),则x>>1=2(二进制10),x&1=1#   dp[5] = dp[2] + 1 = 1 + 1 = 2# - 若x=4(二进制100),则x>>1=2(二进制10),x&1=0#   dp[4] = dp[2] + 0 = 1 + 0 = 1dp[x] = dp[x >> 1] + (x & 1)return dp

相关文章:

  • 云计算与人工智能的融合:从弹性算力到智能云的IT新革命
  • CentOS 7 编译ClickHouse 24.8完整指南
  • 七天学会SpringCloud分布式微服务——04——Nacos配置中心
  • AI助力游戏设计——从灵感到行动-靠岸篇
  • 蓝牙工作频段与跳频扩频技术(FHSS)详解:面试高频考点与真题解析
  • 【开发杂谈】Auto Caption:使用 Electron 和 Python 开发实时字幕显示软件
  • 024 企业客户管理系统技术解析:基于 Spring Boot 的全流程管理平台
  • PILCO: 基于模型的高效策略搜索方法原理解析
  • 2025.6.27总结
  • 前端Promise从入门到精通全指南
  • fastadmin表格数据逗号分隔的id关联展示数据名称并实现搜索
  • 基于Versoria函数优化协方差更新的改进扩展卡尔曼滤波(MVC-EKF)与经典EKF的对比,附matlab源代码|订阅专栏后可查看完整代码
  • ERP知识有价值,更有温度!
  • react-sequence-diagram时序图组件
  • Java大厂面试实录:从Spring Boot到AI微服务架构的全栈挑战
  • 系统性能优化-7 TCP 四次挥手
  • 【请关注】制造企业机械加工数据脱敏解决方案
  • QGIS导出Shape文件
  • matplotlib 绘制热力图
  • uniapp中表格固定列(Vue)