题意:求自然数[1~n]的二进制数中1的个数,返回对应的数组。
解题方法:动态规划;该题可以用c++的内置函数__builtin_popcount,属于经典题范畴,有相关csdn文件介绍这种题,方法很多样
#include<vector>
using namespace std;
class Solution {
public:
vector<int> countBits(int num) {
vector<int> result(num + 1, 0);
for (int i = 0; i <= num; i++) {
result[i] = result[i >> 1] + (i & 1);
}
return result;
}
};