
求解代码
java
public int[] countBits(int n) {
int[] bits = new int[n+1];
for(int i=0;i<=n;i++){
bits[i]=oneBits(i);
}
return bits;
}
private int oneBits(int n){
int count = 0;
while(n>0){
n&=(n-1);
count++;
}
return count;
}
小贴士
核心就是用 n & (n-1) 消去最右侧 1的技巧统计 1 的个数。