输入:n = 11 (控制台输入 00000000000000000000000000001011)
输出:3
解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。
示例 2:
输入:n = 128 (控制台输入 00000000000000000000000010000000)
输出:1
解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 ‘1’。
示例 3:
输入:n = 4294967293 (控制台输入 11111111111111111111111111111101,部分语言中 n = -3)
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 ‘1’。
提示:
输入必须是长度为 32 的 二进制串 。
================================================================


n - 1操作:
无论是借位,还是减1,遇到1就停止;
从低位到高位,一直到1,每一位都发生了反转
&运算符:
与运算进行的是这样的算法:
0&0=0,0&1=0,1&0=0,1&1=1
在与运算中两个开关是串联的,如果我们要开灯,需要两个开关都打开灯才会打开。
理解为A与B都打开,则开灯,所以是1&1=1
任意一个开关没打开,都不开灯,所以其他运算都是0
通俗理解为A(与)&B都开则开,否则关
n&(n-1):
通过前两步的简单解释,不难理解最后的&操作,就将之前发生过反转的位都变成0啦,之后就循环 n - 1, n & (n - 1)操作就可以很很简单的计算出二进制位中1的个数。每一次操作,都是遇到1就结束,所以每一次操作都对应有一个1.直到n的所有位都变成了0,说明计算结束。
方法一:逐位判断(执行用时:4 ms 内存消耗:5.3 MB)
=============================================================================================
算法
算法流程:
1.初始化数量统计变量 res = 0。
2.循环逐位判断: 当 n = 0 时跳出。
3. res += n & 1 : 若 n & 1 = 1n&1=1 ,则统计数 resres 加一。
4. n >>= 1 : 将二进制数字 nn 无符号右移一位( Java 中无符号右移为 “>>>>>>” ) 。
返回统计数量 resres 。
int hammingWeight(uint32_t n) {
int ret=0;
while(n>0){
ret+=n&1;
n>>=1;
}
return ret;
}

方法二:位运算优化(执行用时:0 ms 内存消耗:5.3 MB)
==============================================================================================
就是利用我上面写的分析n&(n-1)
int hammingWeight(uint32_t n) {
int ret=0;
while(n!=0){
ret++;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。






既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)


感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-o0F3tLWN-1712907525776)]

194

被折叠的 条评论
为什么被折叠?



