给你一个整数 n
,对于 0 <= i <= n
中的每个 i
,计算其二进制表示中 1
的个数 ,返回一个长度为 n + 1
的数组 ans
作为答案。
今天看一下这道简单题,主要考查位运算,代码如下
java
class Solution {
public int[] countBits(int n) {
int[] bits = new int[n + 1];
int heightBit = 0;
for (int i = 1; i <= n; i++) {
if ((i & (i - 1)) == 0) {
heightBit = i;
}
bits[i] = bits[i - heightBit] + 1;
}
return bits;
}
}