创见博客
位1的个数
七崽爱吃小饼干2026/07/22阅读 1专栏 算法合集

位1的个数

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

示例 1:

codeType
输入:n = 11
输出:3
解释:输入的二进制串 1011 中,共有 3 个设置位。

示例 2:

codeType
输入:n = 128
输出:1
解释:输入的二进制串 10000000 中,共有 1 个设置位。

示例 3:

codeType
输入:n = 2147483645
输出:30
解释:输入的二进制串 1111111111111111111111111111101 中,共有 30 个设置位。

提示:

  • 1 <= n <= 231 - 1

进阶:

如果多次调用这个函数,你将如何优化你的算法?

解法

ts
function hammingWeight(n: number): number {
    let res = 0
    for(let i = 0; i < 32 && n > 0; i++){
        // 获取最后一位
        let lastNum = n & 1
        // 判断这位是不是1,这样写主要是可读性更好
        res += lastNum === 1 ? 1 : 0
        // n向右移动一位
        n = n >>> 1
    }
    return res
};
评论
0/100