您的位置:首页 > 其它

LeetCode 338. Counting Bits

2016-07-25 18:22 375 查看

描述

给出一个数,求从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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode