给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。
示例 1:
输入:n = 2 输出:[0,1,1] 解释: 0 --> 0 1 --> 1 2 --> 10
示例 2:
输入:n = 5 输出:[0,1,1,2,1,2] 解释: 0 --> 0 1 --> 1 2 --> 10 3 --> 11 4 --> 100 5 --> 101
提示:
0 <= n <= 105
代码:
#include<iostream>
#include<vector>
using namespace std;
class Solution {
public:
vector<int> countBits(int n) {
vector<int> bit(n + 1);
for (int i = 1; i <= n; i++) {
bit[i] = bit[i >> 1] + (i & 1);
}
return bit;
}
};
int main() {
int n; cin >> n;
vector<int> res;
Solution solution = Solution();
res = solution.countBits(n);
for (int i = 0; i <= n; i++) {
cout << res[i] << " ";
}
return 0;
}
433

被折叠的 条评论
为什么被折叠?



