如果是偶数,则1的个数是一样的。因为偶数的末尾一定是0,右移一位不会改变1的个数。
public int[] countBits(int num){
int[] dp=new int[num+1];
dp[0]=0;
for(int i=1;i<=num;i++){
if(i%2==0){
dp[i]=dp[i>>1];
}
else{
dp[i]=dp[i-1]+1;
}
}
return dp;
}