-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcountBits.cpp
More file actions
37 lines (34 loc) · 935 Bytes
/
countBits.cpp
File metadata and controls
37 lines (34 loc) · 935 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
class Solution {
public:
vector<int> countBits(int n) {
vector<int> ans(n + 1, 0);
for (int i = 1; i <= n; i++) {
if (i & 1) ans[i] = ans[i - 1] + 1;
else ans[i] = ans[i >> 1];
}
return ans;
}
};
// O(nlogn) Brian Kernighan
class Solution {
public:
int countOnes(int x) {
int ones = 0;
while (x > 0) {
x &= (x - 1);
ones++;
}
return ones;
}
vector<int> countBits(int n) {
vector<int> bits(n + 1);
for (int i = 0; i <= n; i++) {
bits[i] = countOnes(i);
}
return bits;
}
};
// 作者:LeetCode-Solution
// 链接:https://leetcode-cn.com/problems/counting-bits/solution/bi-te-wei-ji-shu-by-leetcode-solution-0t1i/
// 来源:力扣(LeetCode)
// 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。