package leetcode;
public class demo_338 {
public int[] countBits(int n) {
int[] res=new int[n+1];
for(int i=0;i<=n;i++) {
if(i==0) {res[i]=0;continue;}
if(i==1) {res[i]=1;continue;}
if(i==2) {res[i]=1;continue;}
//偶数相当于自己一半的数左移一位,于是1的个数不变
if(i%2==0) {
res[i]=res[i/2];
//奇数为偶数加1,因为偶数左移一位会多一个0,此时0变成1,则1的个数加一
}else {
res[i]=res[i-1]+1;
}
}
for (int i : res) {
System.out.println(i);
}
return res;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
demo_338 demo=new demo_338();
demo.countBits(16);
}
}