题目描述
给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。
思路
所有奇数的二进制都比它上一位偶数的二进制1的个数多1。
所有偶数的二进制都与它的一半的二进制1的个数一样多。
代码
class Solution {
public:
vector<int> countBits(int num) {
vector<int> m;
m.push_back(0);
for (int i = 1; i <= num; ++i){
if (i % 2 != 0)
m.push_back(m[i-1]+1);
else{
m.push_back(m[i/2]);
}
}
return m;
}
};