LeetCode 338: Counting Bits
题目描述
统计从 0 ~ n 每个数的二进制表示中 1 的个数。
解题思路
对于数字 6(110),它可以看成是 4(100) 再加一个 2(10),因此 res[i] = res[i&(i-1)] + 1。
AC代码
class Solution {
public:
vector<int> countBits(int num) {
vector<int> res(num+1, 0);
for (int i = 1; i <= num; ++i)
res[i] = res[i&(i - 1)] + 1;
return res;
}
};