给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。
输入: 2
输出: [0,1,1]
输入: 5
输出: [0,1,1,2,1,2]
进阶:
class Solution {
public:
vector<int> countBits(int num) {
// 000 001 010 011 100 101 110 111
vector<int> res(1, 0);
long long sz = 1;
while(true){
if(sz*2 <= num){
for(int i = 0; i < sz; i++){
res.push_back(1 + res[i]);
}
sz <<= 1;
}else{
for(int i = sz; i <= num; i++){
res.push_back(1 + res[i-sz]);
}
break;
}
}
return res;
}
};leetcode 338. 比特位计数(Counting Bits)
原文:https://www.cnblogs.com/zhanzq/p/10795709.html