问题描述
题解
ans[i]表示数字i中1的数量;
偶数时,二进制的最后一位是0,所以1的数量是前面的数位的数字中1的个数,即ans[i/2]
奇数时,二进制的最后一位时1,同上,1的数量为ans[i/2]+1
代码
class Solution {
public:
vector<int> countBits(int num) {
vector<int>ans;
ans.push_back(0);
for(int i=1;i<=num;i++){
// if(i%2==0){
// ans.push_back(ans[i/2]);
// }
// else{
// ans.push_back(ans[i/2]+1);
// }
ans.push_back(ans[i/2]+(i&1));
}
return ans;
}
};