news 2026/6/10 15:24:56

【 每天学习一点算法 2026/01/19】位1的个数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【 每天学习一点算法 2026/01/19】位1的个数

每天学习一点算法 2026/01/19

题目:位1的个数

给定一个正整数n,编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中 设置位 的个数(也被称为汉明重量)。

  1. 最容易想到的方法就是,遍历二进制字符串,统计 1 的个数(找 1 怎么感觉怪怪的)

    functionhammingWeight(n:number):number{conststr=n.toString(2)letcount=0for(letiofstr){if(i==='1')count++}returncount};
  2. 我们还有一种取巧的方法,js 字符串的 split 方法,可以分割字符串,如果们使用 1 分割字符串,那么结果数组长度减一就是 1 的个数

    function hammingWeight(n: number): number { const str = n.toString(2) return str.split('1').length - 1 };
  3. 我们知道二进制是满二进一,那么二进制运算n - 1就是讲最右侧的 1 变成 0,让后讲这个 1 右侧的 0 变成 1,然后我们对nn - 1进行&运算

    按位与(&)的规则是:只有对应位都为 1 时,结果才为 1,否则为 0

    所以n & (n - 1)的结果就会将最右侧的 1 变成 0,我们循环执行n = n & (n - 1)直到 n 变成 0,循环次数就是 1 的个数

    functionhammingWeight(n:number):number{letcount=0while(n){n&=(n-1)count++}returncount};

题目来源:力扣(LeetCode)

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

数据不会说话?宏智树 AI:一键解锁论文实证分析的硬核密码

还在为论文里一堆数据 “无从下手” 而焦虑?收集了上百份问卷却只会做简单计数,跑了几十组实验数据却挖不出核心规律,好不容易算出结果,又不知道怎么转化为学术论证?作为深耕论文写作科普的博主,我发现宏智…

作者头像 李华
网站建设 2026/6/10 12:28:45

python基于人脸识别的互联网课堂学生考勤系统

目录基于人脸识别的互联网课堂学生考勤系统摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于人脸识别的互联网课堂学生考勤系统摘要 随着在线教育的普及,传统考勤方式如手…

作者头像 李华
网站建设 2026/6/10 13:19:06

大数据基于python+Vue的老年人健康数据远程监控数据可视化分析系统 t2w0v3wq

目录系统概述技术架构核心功能应用价值开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 该系统基于Python与Vue框架开发,面向老年人健康数据远程监控与可视化分析。通过…

作者头像 李华
网站建设 2026/6/10 11:48:50

协同过滤算法 基于SpringBoot的招聘求职面试系统

目录协同过滤算法在招聘求职面试系统中的应用开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!协同过滤算法在招聘求职面试系统中的应用 基于SpringBoot框架的招聘求职面试系统采用协同过滤算…

作者头像 李华