191. 位1的个数
位运算
public class Solution {
// 00000000000000000000000000001011
// 最高遍历 32 次,使用位运算判断最低位是否为 1,如果是则 count + 1,然后 n 右移一位
// 优化点:如果 n 右移之后等于 0 就不用再遍历了
public int hammingWeight(int n) {
int count = 0;
for (int i = 0; i < 32; i++) {
if ((n & 1) == 1) {
count ++;
}
n >>= 1;
}
return count;
}
}
位运算优化
public class Solution {
public int hammingWeight(int n) {
int count = 0;
while (n != 0) {
n &= (n - 1);
count ++;
}
return count;
}
}