Leetcode191--位1的个数(含多种解法和图解分析)

Acer宏碁暗影骑士擎AN515-58原厂系统恢复指南:从ISO镜像到完整出厂设置 本文详细介绍了为Acer宏碁暗影骑士擎AN515-58游戏本恢复原厂系统的完整指南。从准备工作、数据备份到下载官方镜像、制作恢复U盘,再到BIOS设置与恢复流程,一步步教你如何将系统完整还原至出厂状态,确保所有硬件驱动、NITROSENSE控制中心等专属优化功能恢复正常,解决系统卡顿、功能异常等问题。 阅读详情

Leetcode191–位1的个数

编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。

作者:黑暗主宰

邮箱:shengzhanhe@gmail.com

Leetcode191–位1的个数

题目描述

原题链接:

​ https://leetcode-cn.com/problems/number-of-1-bits/ (中文)

​ https://leetcode.com/problems/number-of-1-bits/ (英文)

题目描述:

​ 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量。

示例 1:
  输入:00000000000000000000000000001011
  输出: 3
  解释: 输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。
示例 2:
  输入:00000000000000000000000010000000
  输出: 1
  解释: 00000000000000000000000010000000 中,共有一位为 ‘1’。
示例 3:
  输入:11111111111111111111111111111101
  输出: 31
  解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 ‘1’。

解题思路

这道题是一个位运算操作的题,最简答的思路就是不断的把数字右移,如果非零,累计数量加1,直到数字移位等于0,循环结束。

def hammingWeight(n):
	count = 0
	while n:
		if n & 1 == 1:
			count += 1
		n = n >> 1
	return count

剑指offer上说这样解可能陷入死循环,但是leetcode提交后也AC了(XD)。那剑指offer上的例子来说,就是加入输入的是 0x80000000 ,右移移位的话,不是得到 0x40000000 而是得到 0xC0000000 ,所以一直右移的话,会得到 0xFFFFFFFF,陷入死循环。(leetcode中为什么这样写可以AC呢,估计是因为python语言的特性吧)

然后,假如右移会存在进入死循环的可能,怎么避免呢,可以逆向思维,设置一个flag,初始值为1,每次把flag向左移一次,最大的数是32位,所以移动32次,就可以统计出来1的个数

def hammingWeight(n):
	count = 0
	flag = 1
	for i in range(32):
		if n & flag:
			count += 1
		flag = flag << 1
	return count

另外就是剑指offer上提供的一种比较巧的解法,就是说我们假如一个数字的有m个1,我们每次把从第一个1开始反转,直到第m个,这样要求解的整数n就变成了零,具体的,我们画个图说明一下,
在这里插入图片描述

代码如下

def hammingWeight(n):
	cnt = 0
	while n:
		cnt += 1
		n &= (n-1)
	return cnt

最后,再来一个python独有的骚操作,一行代码解题

def hammingWeight(n):
	return str(bin(n)).count('1')

欢迎大家关注我的个人公众号,同样的也是和该博客账号一样,专注分享技术问题,我们一起学习进步
在这里插入图片描述

注: 文中有写错的地方,欢迎大家不吝指正!!!

SAP_MM模块库存概览俄罗斯报表简介 本文介绍了SAP MM模块中"库存概览俄罗斯报表"的功能与应用。该报表主要用于查看物料在不同库存地点和类型的库存情况,并满足俄罗斯当地法规要求。文章解释了"俄罗斯报表"可能指代本地化合规库存报表或客户自定义报表,详细说明了事务代码J3RFLVMOBVEDH的操作步骤,包括公司代码、物料编码、日期范围等查询条件,并解释了报表中各字段含义如期初期末库存数量与价值。最后强调在物料分类账处理完成后使用该报表可获得实际库存价值,为SAP用户提供了实用的库存管理参考。 阅读详情

相关推荐

基于知识图谱的旅游推荐系统

这一系统整合了当今先进的数据技术:采集携程等大型平台的景点数据,通过爬虫技术源源不断地获取最新的旅游信息。此外,我们采用Neo4j图数据库来存储和处理这些数据,结合自然语言处理技术,为你提供精准的旅游建议。:通过直观的知识图谱展示,了解各个景点之间微妙的联系,无论是文化背景还是地理方位,你都能从中发现新的旅行灵感。准备毕业设计的同学,关注我们,这是一个集成了多种前沿技术的项目,为你的学术成果锦上添花。:不再浪费时间,系统根据你的偏好和历史评分,利用协同过滤技术推荐适合的旅游目的地。

qalangtao的博客-qalangtao.com 774

算法-------位1的个数

编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'。 示例 2: 输入:0000000000000000000000001000...

男儿不展风云志,空有天生八尺躯 602

机器学习【学校智慧食堂及其应用】

本文主要介绍机器学习【智慧食堂及其应用】

qq_201729558 2574

LeetCode刷题-191. 位1的个数

难度:简单⭐️⭐️⭐️。

快乐的小小程序猿 397

最优控制理论 二+、哈密尔顿函数法的补充

本章基于变分法所推出的哈密尔顿函数法,2、讨论了积分方程约束的转化、控制+状态等式约束的一阶必要条件。3、控制分段连续、状态存在内点约束等情况下的角点条件,给出了协态变量和哈密尔顿函数在内点处不连续的表达式。...

MSysの优快云 9397

记录一下本地部署Dify的坑

1. 截止2025-3-4为止,请注意,不要直接拉Dify的1.0.0版本。请先试用0.15.3版本。1.0.0有一个bug需要解决。3. 请使用docker-ce 新版本,docker-engine等老版本可能会有部分容器启动脚本执行莫名报错。2. 注意,请使用docker-compose V2版本,或者V1较高版本,否则会导致解析官方yml模板错误。

哈利路亚的收藏夹 5348

LeetCode-第191题-位1的个数

LeetCode-第191题-位1的个数

weixin_67854013的博客 418

智能测试策略优化:平衡覆盖率、时间和资源

在软件开发过程中,测试是确保软件质量的关键环节。然而,测试工作往往面临着诸多挑战,其中如何在保证测试覆盖率的前提下,合理分配时间和资源是一个核心问题。本文章的目的在于探讨智能测试策略的优化方法,帮助软件测试团队在有限的时间和资源条件下,实现尽可能高的测试覆盖率。文章的范围涵盖了智能测试策略的核心概念、算法原理、数学模型、实际应用案例以及相关工具和资源等方面。本文将按照以下结构进行组织:首先介绍智能测试策略优化的背景和相关概念,包括核心术语和缩略词的定义;

AIGC应用创新大全的博客 622

LeetCode-191

LeetCode算法题191:位1的个数 前言 第一次尝试在算法题中使用与进行(&)位运算,一般多次使用过右移>>,左移<<,异或^这三种。 简单说下与运算(&)原理:1 1为1 其余为0。简单来说只有两个数比较都为1的情况才会为1,其他情况为0。 需要注意的是这题仅仅使用>>是不够的,因为>>仅仅只能满足非负数情况,如果为负数,最高位符号位为1。 原因:>>是舍弃最低位,高位使用符号位补充,这种情况使用>>会发生死循环

寒的博客 243

华硕 NUC 对比 Mac mini:跑 OpenClaw 谁性价比更高?

在选择本地 AI 服务器硬件时,华硕 NUC 和 Mac mini 是两个热门选择。本文将从硬件规格、性能、成本、功耗、易用性等多个维度对比这两款设备,帮助您决定哪款更适合运行 OpenClaw。

博客 1023

时间序列、时间序列分析、时间序列效应分解、平稳时间序列、AIC和BIC

时间序列、时间序列分析、时间序列效应分解、平稳时间序列、AIC和BIC 目录 时间序列、时间序列分析、时间序列效应分解、平稳时间序列、AIC和BIC 时间序列 时间序列分析 时间序列效应分解 平稳时间序列 AIC和BIC 时间序列 时间序列数据是某个个体在多个时间点上收集的数据。分析时间序列的方法构成了数据分析的一个重要领域,即时间序列分析。时间序列根据所研究的依据不同,可产生不同的分类。按照研究对象可以分为一元时间序列和多元时间序列;按照时间属性可以分为离散时间序列和连续时间序列;按照序

data+scenario+science+insight 1230

【LeetCode笔记】No191位1的个数

191. 位1的个数 - 力扣(LeetCode) (leetcode-cn.com) 解题方法有两种: 纯用位运算 用暴力遍历 位运算基础: 位运算是直接对整数的二进制进行的运算 << : 在一定范围内,每向左移一位,相当于 * 2 >> : 在一定范围内,每向右移一位,相当于 / 2 位运算解法: public int hammingWeight(int n) { int ret =0; while(n!=0){

qq_44220795的博客 3143

不提交也不释放的事务,数据库连接还有可能被复用

摘要 实验发现Spring事务管理下,未提交事务的数据库连接池连接仍可被复用,这与传统认知相悖。通过配置HikariCP连接池(最大2连接)并设计测试接口,观察到未提交事务的连接会被后续请求复用。这可能导致GTID错误(当MySQL开启GTID且混用事务/非事务表时)以及数据修改丢失问题。研究揭示了Spring事务管理机制与连接池交互的特殊行为,对高并发系统设计具有重要启示。

蔡定努 180

LeetCode 图解 | 191.位 1 的个数

点击上方蓝字设为星标下面开始今天的学习~今天分享的题目来源于 LeetCode 上第 191 号问题:位 1 的个数。题目描述编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字...

程序员吴师兄的博客 394

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

LeetCode第357题_计算各个位数不同的数字个数

LeetCode第357题解析:计算各位数字不同的数字个数 这道中等难度题目要求计算0到10^n范围内各位数字不重复的数字数量。文章提供了基于排列组合的数学解法,时间复杂度O(n),空间复杂度O(1),并给出C#、Python、C++三种实现。 关键点: n=0和n=1的特殊情况处理 从第二位开始,每位可选数字数递减 最优解法利用排列组合公式,避免暴力枚举 三种语言实现均高效,其中C++执行最快,C#内存占用最小,Python代码最简洁。文章还分析了常见错误,对比了不同解法,并推荐了相关题目。

qq_40263592的博客 1884

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

leetcode解题汇总(持续更新)

leetcode解题汇总(持续更新) 笔者刷题是从19年秋招前后开始的,无论是硬件工程师、软件工程师、算法工程师、测试工程师等等,只要要求掌握编程语言的相关岗位,对算法和数据结构相关的知识的要求是必不可少。对于这些知识的掌握值通过课本上的知识是不够的,笔者亲身经历过19年秋招。流程大部分都是分三步:网申、笔试、面试(一般至少两轮、及以上)。你如果想通过笔试这一关,必须要刷题,通过了笔试以后,在面试...

EngineerHe的博客 7860

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

算法通过村第十一关-位运算|白银笔记|高频题目

算法笔记;位运算高频问题;相加和相乘;位运算;Java

weixin_46585492的博客 555

Leetcode461--汉明距离

Leetcode461–汉明距离 两个整数之间的汉明距离指的是这两个数字对应二进制位不同的位置的数目。 给出两个整数 x 和 y,计算它们之间的汉明距离。 作者:黑暗主宰 邮箱:shengzhanhe@gmail.com 文章目录Leetcode461--汉明距离题目描述解题思路 Leetcode461–汉明距离 题目描述 原题链接: ​ https://leetcode-cn.com/prob...

EngineerHe的博客 508

文章汇总

11月份比较忙,基本上没有任何输出,这一篇主要是来汇总之前的输出,之后会持续进行更新。 多线程 浅谈ThreadLocal ThreadLocal使用不好,小心造成内存泄露! CountDownLatch实现原理 CyclicBarrier实现原理 Semaphore实现原理 JUC基石——Unsafe类 浅探CAS实现原理 浅说Synchronized Synchronized的优化 说说线程池 LongAdder实现原理 谈谈并行流parallelStream 谈谈Ru.

阳阳的博客 1683

LeetCode刷题笔记第191题:位1的个数

【代码】LeetCode刷题笔记第191题:位1的个数。

qq_29787929的博客 424

Leetcode191. 位1的个数

Leetcode191. 位1的个数 题目: 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 输入:11111111111111111111111111111101 输出:31 解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 ‘1’。 题解: 方法一: 简单粗暴些,依次判断最低位...

会流泪de鱼的博客 309

leetcode191. 位1的个数,位运算巧用

leetcode191. 位1的个数,位运算巧用

热爱C++和golang的学生 521

LeetCode191(位1的个数)

位1的个数 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。 示例 1: 输入:00000000000000000000000000001011 输出:3 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 ‘1’。 示例 2: 输入:0000000000000000000000001000...

qq_36134437的博客 532

【每日一道LeetCode】——191. 位1的个数

【每日一道LeetCode】——191. 位1的个数

yanxiang3306 2202

leetcode_191_2021-10-15

leetcode_191_位1的个数 这是一道很简单的题目,这里我要介绍对它的优化解题方案。 法一: 直接遍历32位,利用位运算找到有1的位,然后利用oneNums来维护。 class Solution { public: int hammingWeight(uint32_t n) { int oneNums = 0; for(int i = 0; i < 32; ++i){ //直接遍历n的每一位 if((n >> i) &

qq_53558968的博客 260

LeetCode知识点总结 - 191

LeetCode 191. Number of 1 Bits 考点 难度 Bit Manipulation Easy 题目 Write a function that takes an unsigned integer and returns the number of ‘1’ bits it has (also known as the Hamming weight). Note: Note that in some languages, such as Java, there is

m0_59773145的博客 304
上一篇: Leetcode53--最大子序和(图解分析,附剑指offer图书资料)
下一篇: 使用mobaxterm连接服务器出现连接中断问题
黑暗主宰
博客等级 码龄9年 72粉丝 169原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值