恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

Leetcode hot100 比特位计数【简单】

  • 首页
  • 资讯中心
  • /
  • Leetcode hot100 比特位计数【简单】

相关资讯

Java+SSM+Flask商城系统毕业设计全流程复盘 2026/10/13 19:12:13
大模型蒸馏的远期回旋镖:能力天花板、偏见继承与维护泥潭 2026/10/13 19:07:12
FDE前置部署工程师:AI落地最后一公里的关键角色与实操指南 2026/10/13 19:07:12

最新资讯

基于Python的舆情监控分析与预测系统:从数据采集到可视化预警
从原始点云到目标簇:PCL点云预处理实战全流程
STM32F107裸机LWIP移植实战:从PHY初始化到80Mbps吞吐调优
生产制造业成本核算软件绿色版部署:从SQLDMO组件注册到料工费归集实战
仿生机器人听觉-触觉跨模态注意力与遮挡鲁棒性设计
UN R155 CSMS 合规实战:从法规原文到证书申请全链路拆解

今日推荐

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析
CAN总线错误处理机制深度解析:从位错误到Bus Off的硬件级调试

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

Leetcode hot100 比特位计数【简单】

发布时间:2026/10/13 19:12:13
Leetcode hot100 比特位计数【简单】 法一模拟二进制加一主要想借这个题讲明白做题的思路第一步为什么是先看透了这个题用自己的话讲明白。这个题不是让你数1的个数嘛如果你上来就直接数会发现什么规律也找不到。0 1 -- 0个 1个10 11 -- 1个 2个100 101 110 111 -- 1个 2个 2个 3个1000 1001 1010 1011 1100 1101 1110 1111 -- 1个 2个 2个 3个 2个 3个 3个 4个就应该先看透了题不止求数字n的1个数n前面的也要给出来。直觉告诉你应该是能用到前面的不然只求数字n的不就好了。所以其实只是让你模拟二进制的加一操作而已。。。观察规律来一个1只有两种情况一种是末尾是0那么直接把1放上去就好了一种是末尾是1那么就往前一直找到第一个0把0的位置改为1后面的1都改为0。怎么找第1个0呢其实就是10进制转2进制。不断对2取模拿余数。那其实可以合并成同一种情况也就是从低位往前找第一个0.本质上考的是①找到进制的加一操作的规律 ②考你10进制转2进制。class Solution { public int[] countBits(int n) { //结果集 int[] result new int[n1]; //用数字0去初始化 int size1; int oneNum 0; result[0]oneNum; for(int i1;in;i){ //1-特殊情况提前做处理而不是混到后面去考虑——如果1的个数等于位数那么位数11的个数变为1 if(oneNumsize){ size; oneNum1; //2-普通情况——如果1的个数小于位数 }else{ int lastOneNum 0; //从后往前数1的个数 int beforeI i-1; //i前面那个数 while(beforeI%21){ lastOneNum; beforeIbeforeI/2; } oneNum oneNum-lastOneNum1; } result[i]oneNum; } return result; } }法二更简单的规律对于所有的数字只有两类奇数二进制表示中奇数一定比前面那个偶数多一个 1因为多的就是最低位的 1。偶数偶数的最低位是0也就是对于偶数来说二进制表示里1的个数和去掉最低位的二进制表示里1的个数同样多。例如“1010”中1的个数和“101”中1的个数同样多。去掉最低位也就是右移一位Java里右移一位的运算和除以2的运算等价。所以两种运算方式都可以class Solution { public int[] countBits(int n) { //结果集 int[] result new int[n1]; //用数字0去初始化 result[0]0; for(int i1;in; i){ //1-奇数 if(i%21){ result[i]result[i-1]1; //2-偶数 }else{ result[i]result[i/2]; //除以2 //result[i]result[i1]; //右移一位 } } return result; } }

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号