题目描述:编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量)。
示例1:
1 | 输入:n = 00000000000000000000000000001011 |
示例2:1
2
3输入:n = 00000000000000000000000010000000
输出:1
解释:输入的二进制串 00000000000000000000000010000000 中,共有一位为 '1'。
示例3:1
2
3输入:n = 11111111111111111111111111111101
输出:31
解释:输入的二进制串 11111111111111111111111111111101 中,共有 31 位为 '1'。
题解方法一:逐位查找
算法思路
1、初始化数量统计变量 res=0 。
2、循环逐位判断: 当 n=0 时跳出。
* res += n & 1 : 若 n&1=1 ,则统计数 resresres 加一。
* n >>= 1 : 将二进制数字 n 无符号右移一位。
返回统计数量 res 。
代码实现如下:
1
2
3
4
5
6
7
8function majorityElement(nums) {
let res = 0;
while (n) {
res += n & 1;
n >>= 1;
}
return res;
}
总结:大功告成✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️✌️
参考链接: