x&(x-1) ,作用是将x二进制表示下最右边的1改为0
eg:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/efcb35f7aeccef4b4be23800f3ead973.png)
class Solution {
public int[] countBits(int num) {
int []countOneRes=new int[num+1];
for(int i=0;i<=num;++i){
countOneRes[i]=countOnes(i);
}
return countOneRes;
}
public int countOnes(int x){
int count=0;
while(x>0){
x&=x-1;
count++;
}
return count;
}
}