题目描述:给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。
题目链接:338. 比特位计数
从更小的数递推得出,f[i]=f[i>>1]+(i&1? 1:0)
class Solution {
public:
vector<int> countBits(int num) {
int f[num+5];
vector<int> ans;
f[0]=0;
for (int i=1;i<=num;i++){
f[i]=f[i>>1]+(i&1? 1:0);
}
for (int i=0;i<=num;i++) ans.push_back(f[i]);
return ans;
}
};