【LeetCode】【算法】338. 比特位计数
LeetCode 338. 比特位计数
题目描述
给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。
思路
思路:一个for循环遍历[0,n]
,统计二进制中1的个数思路如下:
int count = 0; int tmp = i;
- while循环,条件是
tmp!=0
。在循环中count += tmp&1; tmp>>1;
,也就是不断做右移,不断统计1的个数
代码
class Solution {
public int[] countBits(int n) {
int[] result = new int[n + 1];
for (int i = 0; i <= n; i++) {
int count = 0;
int tmp = i;
while (tmp != 0){
count += tmp & 1;
tmp = tmp >> 1;
}
result[i] = count;
}
return result;
}
}