Neo's Blog

不抽象就无法深入思考
不还原就看不到本来面目!

0%

位运算系列-比特位计数

比特位计数 - 题目描述

给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。

比特位计数 - 代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
/*
int lowbit(int n) {
return n & (~n);
}
*/
vector<int> countBits(int num) {
vector<int> dp(num + 1);
for (int i = 1; i <= num; ++i) {
dp[i] = dp[i & i - 1] + 1; //每次n&n-1会抹掉最后一个1
}

return dp;
}
};
你的支持是我坚持的最大动力!