位1的个数

LeetCode每日一题,191. Number of 1 Bits

先看题目描述

6I3esA.png

大意就是给定一个无符号整数 n,让我们输出其二进制表示下的 1 的个数

算法和思路

位运算

对 n 进行运算 n = n & (n - 1) 后,n 的二进制表示下最低一位的 1 会变为 0,重复进行该运算直至 n 为 0,运算的执行次数就是 1 的个数

算法源码

位运算

1
2
3
4
5
6
7
8
9
10
11
public class Solution {
// you need to treat n as an unsigned value
public int hammingWeight(int n) {
int ans = 0;
while (n != 0) {
n = n & (n - 1);
ans++;
}
return ans;
}
}