描述
给出一个数,求从0到这个数每个数包含有多少个2进制1.
解决
动态规划的思想。
状态定义:res[i]表示第i个数有多少个1。
状态转移方程: res[i] = res[i / 2] + (i & 1)
class Solution {
public:
vector<int> countBits(int num) {
vector<int> res(num + 1, 0);
//res.reserve(num);
for (int i = 0; i <= num; ++i){
res[i] = res[i / 2] + (i & 1);
// cout << res[i] << endl;
}
//cout << res.size() << endl;
return res;
}
};