num. For every numbers i in the range 0 ≤ i ≤ num
Example:
For num = 5
you should return [0,1,1,2,1,2]
.
由以前求i的二进制中1的个数方法得知,i的二进制比i&(i-1)多一个
class Solution {
public:
vector<int> countBits(int num) {
vector<int> res(num + 1);
res[0] = 0;
for (int i = 1; i <= num; i++){
res[i] = res[i&(i - 1)] + 1;
}
return res;
}
};