191. 位1的个数

目录

一、问题描述

二、解题思路

三、代码

四、复杂度分析


一、问题描述

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

二、解题思路

强制将 n 当作无符号类型处理

  • 即使原始 n 是负数,转换为 unsigned int 后,仍然保留了其 32 位的补码表示

  • num & 1num >>= 1 会安全地进行 32 次迭代,不会陷入死循环。

  • 所以我们依然能正确统计 1 的个数!

三、代码

cpp 复制代码
class Solution {
public:
    int hammingWeight(int n) {
        unsigned int num = static_cast<unsigned int>(n); // 转换为无符号整数
        int count = 0;
        while (num != 0) {
            count += (num & 1);  // 判断最低位是否为1
            num >>= 1;           // 无符号右移,不保留符号位
        }
        return count;
    }
};

四、复杂度分析

复杂度类型 复杂度 说明
时间复杂度 O(1) 固定32位整数,最多32次循环
空间复杂度 O(1) 只使用常数个变量
相关推荐
黄敬峰2 小时前
深入理解算法核心:从递归思想、数组扁平化到快速排序
算法
得物技术3 小时前
从狂野代码到按目标生产:得物推荐 AI Harness 的工程化实践|AICon 演讲整理
人工智能·算法·架构
AI小老六6 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
后端·算法·ai编程
胡萝卜术7 小时前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?
算法·设计模式·面试
Asize8 小时前
初识DFS 与 BFS:递归、队列与图遍历
算法
罗西的思考21 小时前
机器人 / 强化学习】HIL-SERL:人类在环驱动的具身智能进化框架
人工智能·算法·机器学习
CSharp精选营1 天前
关系型 vs 非关系型:从原理到选型,一文搞定数据库核心分类
数据结构·nosql·关系型数据库·非关系型数据库·技术选型
美团技术团队1 天前
LongCat 开源 VitaBench 2.0:长期动态智能体基准新标杆
人工智能·算法
To_OC2 天前
LC 207 课程表:刚学图论那会儿,我连这是拓扑排序都没看出来
javascript·算法·leetcode
To_OC2 天前
LC 208 实现 Trie 前缀树:曾被名字劝退,写完发现是送分题
javascript·算法·leetcode