leetcode 191. 位1的个数

 

经典题目,位操作的小技巧:与操作

我们可以把前面的算法进行优化。我们不再检查数字的每一个位,而是不断把数字最后一个 1 反转,并把答案加一。当数字变成 00 的时候偶,我们就知道它没有 1 的位了,此时返回答案。

这里关键的想法是对于任意数字 n ,将 n 和 n - 1做与运算,会把最后一个 1的位变成 0 。为什么?考虑 n和 n - 1的二进制表示。

image.png

在二进制表示中,数字 n 中最低位的 1 总是对应 n - 1中的 0。因此,将 n和 n−1 与运算总是能把 n 中最低位的 1 变成 0 ,并保持其他位不变。

public class Solution 
{public int HammingWeight(uint n){int sum = 0;while (n != 0) {sum++;n &= (n - 1);}return sum;}
}

复杂度分析

时间复杂度:O(1)。运行时间与 n 中位为 1 的有关。在最坏情况下, n 中所有位都是 1 。对于 32 位整数,运行时间是 O(1) 的。

空间复杂度:O(1)。没有使用额外空间。

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246152.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

程序员如何跟领导提离职_如何优雅地跟老板提加薪?按照这3个步骤来,也不是什么难事...

通常情况下,如果你在一个制度比较健全的单位上班,基本上不需要自己提出加薪的要求,达到规定的条件自然就涨工资了。但是我们绝大部分人,是在中小企业上班,如果不跟老板提加薪要求,老板很难主动给你涨工资。…

leetcode 打印从1到最大的n位数

书上原题本想考的是大数问题,但是leetcode上要求的返回值是int,不可能出现当n过大时大数越界的问题, 失去了本题的意义。按大数问题处理,用string和递归来处理该问题。 public class Solution {public int[] PrintNumbers(int n) …

强制关机对电脑的影响_电脑强制关机,对电脑有影响吗?你被伪科普骗了多久?...

相信大多数人都会遇到这么个情况,就是电脑用着用着死机、卡顿,在毫无反应又动弹不得的情况下,采用的招数就是长按电源键10秒强制关机重启。这时候身边的“电脑高手”就会告诉我们说,这样关机会毁害电脑硬件。但它却是处理电脑假死…

vb.net限制软件使用次数_新增投屏及倍数播放,这款软件iOSAndroid全都有,影视神器,抓紧体验...

小小影视 Android、iOS版小小影视以前也分享过,最近貌似版本更新了,新增投屏和倍数播放功能,还没用过的可以下载体验!小小影视APP是一款最全,最新,关键不止有Android版,还有iOS版的影音播放软件…

leetcode 调整数组顺序使奇数位于偶数前面

解法一&#xff1a;双指针 public int[] Exchange(int[] nums) {int head 0;int tail nums.Length - 1;while(head < tail){if((nums[head] & 1) 1){head;continue;}else if((nums[tail] & 1) 0){tail--;continue;}else{int temp nums[head];nums[head] nums[…

pytorch test单张图片_PyTorch版EfficientDet比官方TF实现快25倍?这个GitHub项目数天狂揽千星...

EfficientDet 难复现&#xff0c;复现即趟坑。在此 Github 项目中&#xff0c;开发者 zylo117 开源了 PyTorch 版本的 EfficientDet&#xff0c;速度比原版高 20 余倍。如今&#xff0c;该项目已经登上 Github Trending 热榜。机器之心报道&#xff0c;项目作者&#xff1a;zyl…

Xcode and Unity missing library ‘lGoogleUtilities‘

https://stackoverflow.com/questions/58187800/xcode-and-unity-missing-library-lgoogleutilities

c++ 字符串合并_C语言输入字符和字符串(所有函数大汇总)

C语言输入字符和字符串(所有函数大汇总)C语言有多个函数可以从键盘获得用户输入&#xff0c;它们分别是&#xff1a;scanf()&#xff1a;和 printf() 类似&#xff0c;scanf() 可以输入多种类型的数据。getchar()、getche()、getch()&#xff1a;这三个函数都用于输入单个字符。…

appimage文件怎么安装_bauh:在一个界面中管理 Snap、Flatpak 和 AppImage | Linux 中国...

幸运的是&#xff0c;我偶然发现了一个支持这几种通用包格式的应用程序。-- John PaulSnap、Flatpak 和 AppImage 等通用软件包的最大问题之一就是管理它们。大多数内置的软件包管理器都不能全部支持这些新格式。幸运的是&#xff0c;我偶然发现了一个支持这几种通用包格式的应…

字符编码笔记:ASCII,Unicode 和 UTF-8

作者&#xff1a; 阮一峰 日期&#xff1a; 2007年10月28日 今天中午&#xff0c;我突然想搞清楚 Unicode 和 UTF-8 之间的关系&#xff0c;就开始查资料。 这个问题比我想象的复杂&#xff0c;午饭后一直看到晚上9点&#xff0c;才算初步搞清楚。 下面就是我的笔记&#x…

图形学教程Lecture 13: RayTracing1(Whitted-Style Ray Tracing)知识点总结

课程地址&#xff1a;https://www.bilibili.com/video/BV1X7411F744?p13 课件地址&#xff1a;https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html 感谢大神的课程 1.光线追踪的好处&#xff1a;真实&#xff0c;但是效率低&#xff0c;所以目前是离线渲染 2.whitt…

图形学教程Lecture 14: RayTracing1(Acceleration Radiometry)知识点总结

课程地址&#xff1a;https://www.bilibili.com/video/BV1X7411F744?p14 课件地址&#xff1a;https://sites.cs.ucsb.edu/~lingqi/teaching/games101.html 感谢大神的课程 1.用统一的空间划分&#xff08;Grid&#xff09;加速计算光线相交。划分颗粒度需要注意&#xff0…

Unity项目代码书写规范

以Google的代码规范为主&#xff0c;稍加改动 https://google.github.io/styleguide/csharp-style.html 书写规范 基础写法 Pascal和驼峰混用&#xff0c;参数用驼峰写法&#xff0c;除参数外&#xff0c;都以Pascal写法为主。括号建议用换行方式书写Code 类, 方法, 枚举, …

python常用的包_Python3之常用包汇总

原博文 2020-06-04 10:53 − Python包网站: https://pypi.org/ 1. 繁体与简体转换(https://github.com/berniey/hanziconv.git) pip install hanziconv 示例: from hanziconv impo... 相关推荐 2019-12-09 20:32 − [TOC] # 1. 模块 ## 1.1 模块是什么&#xff1f; - 模块就是个…

vue如何获取年月日_BootstrapVue——Vue和Bootstrap的相结合,构建响应式应用更简单...

介绍BootStrap是世界上最受欢迎的构建响应式移动优先网站的框架&#xff0c;Vue是当前最流行的前端框架之一&#xff0c;BootstrapVue则是将两者相结合&#xff0c;使用BootstrapVue&#xff0c;可以使用Vue.js和前端CSS库--Bootstrap v4在Web上构建响应式&#xff0c;移动优先…

cpu队列长度太长解决方法_CPU中的调试算法对比

批处理系统中采用的调度算法重要指标(吞吐量&#xff0c;周转时间&#xff0c;CPU利用率&#xff0c;公平平衡)非抢占式的先来先服务算法(FCFS)&#xff1a;按照进程就绪的先后顺序使用CPU特点&#xff1a;公平&#xff0c;实现简单&#xff0c;但是长进程后面的短进程需要等待…

Mono,CLR,.net,Net Framework之间的关系

先粗略看下各自的意义&#xff1a; .Net&#xff1a;以下这些技术的统称。是一个平台&#xff0c;而.NET平台有一个实现标准&#xff0c;叫做.Net Standard&#xff1b;.Net Framework/.Net Core/Mono&#xff1a;实现了这个标准&#xff0c;其选择的组件不一定相同CLR&#x…

c++矩阵类_数据结构-JavaScript矩阵类的设计与实现

矩阵是线性代数课学习的重点内容之一&#xff0c;也是线性代数常见工具之一&#xff0c;在应用数学、统计分析、计算机科学、计算机图像处理级物理等多学科中均有应用。矩阵主要是指数据的行列排列的形式&#xff0c;由行row与列col所组成&#xff0c;在数学中M*N矩阵是指具有M…

GPU Skin

转自&#xff1a;http://geekfaner.com/unity/blog4_GPUSkin.html GPU Skin这门技术在端游时代属于标配&#xff0c;特别是MMO游戏&#xff0c;但是手游时代就要case by case了&#xff0c;因为手机的GPU资源还是很珍贵的&#xff08;后处理之类的&#xff09;。作为技术人员&…

button按钮onclick触发不了_单按钮启停:测试模拟脉冲发生器的动作

灯闪烁所模拟是PLC单方面向控件输出信号的过程&#xff0c;控件也可以向模拟PLC输出信号。做一个带反馈灯的按钮&#xff0c;被按下后点亮&#xff0c;再按一下熄灭&#xff0c;且使按钮自保需要一定的接触时间。对应的PLC程序需要一个脉冲发生器(假设地址为L602) 把按钮触点信…