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) 只使用常数个变量
相关推荐
JJ1M820 分钟前
前缀和+贪心总结,基于每日一题力扣3439、3440
python·算法·leetcode
ccc101821 分钟前
30 天 JavaScript 挑战
算法
用户403159863966327 分钟前
简易二进制编辑器
java·算法
起个数先31 分钟前
快速排序算法(Java)
数据结构·排序算法
呆呆的小鳄鱼32 分钟前
leetcode:518. 零钱兑换 II[完全背包]
算法·leetcode·职场和发展
Tim_1037 分钟前
【算法专题训练】02、二进制
java·开发语言·算法
EndingCoder1 小时前
排序算法与前端交互优化
开发语言·前端·javascript·算法·排序算法·交互
云空1 小时前
《探索电脑麦克风声音采集多窗口实时可视化技术》
人工智能·python·算法
沧澜sincerely2 小时前
二分查找【各种题型+对应LeetCode习题练习】
算法·leetcode·二分查找
大千AI助手2 小时前
RLHF:人类反馈强化学习 | 对齐AI与人类价值观的核心引擎
人工智能·深度学习·算法·机器学习·强化学习·rlhf·人类反馈强化学习