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) 只使用常数个变量
相关推荐
hqyjzsb3 小时前
零 AI 项目经验,学 Python 转型 AI 的正确顺序是什么?
开发语言·人工智能·python·算法·职场和发展·数据挖掘·数据分析
辰烨chenye3 小时前
LeetCode Hot 100 题解 · 二分篇
java·算法·leetcode
微功夫信息技术3 小时前
分层多智能体强化学习驱动的非急救转运公平 - 效率统一调度系统研究与实践
人工智能·学习·算法·动态规划
sanjiaomao3334 小时前
从论文公式到Python实现:用单元测试校验滑动平均算法
python·算法·单元测试
乐迪信息4 小时前
如何通过AI防爆摄像机精准判断船舶超速?
大数据·人工智能·算法·安全·目标跟踪
Interview Aid1124 小时前
Walmart Global Tech SDE 三轮面经|基础、并发、压力面
面试·职场和发展
雨落在了我的手上5 小时前
Java数据结构(十一):优先级队列(堆)
数据结构
大圣编蚕5 小时前
Java ByteArrayInputStream 详解:从入门到实战
java·开发语言·算法
小玮看世界6 小时前
[Python]OD算法在OD实际运用转化参考清单
开发语言·python·算法
黎阳之光6 小时前
数字孪生赋能全域水网,实现水资源管控与节水降碳双向提升
人工智能·物联网·算法·安全·数字孪生