[LeetCode]338. Counting Bits
思路
对于每一位数,计算其中1的个数,计算过程优化,可以使时间较短
代码
class Solution {
public:
vector<int> countBits(
int num) {
vector<int> res;
for (
int i =
0; i < num +
1; ++i) {
int count =
0, n = i;
while (n){
++count;
n &= n -
1;
}
res.push_back(count);
}
return res;
}
};
思路 update
对于上述代码中的循环计算,对于5来说,只需要计算 5 & 4 的结果,之前的结果都保存在前一位数中
代码 update
class Solution {
public:
vector<int> countBits(
int num) {
vector<int> res(num +
1,
0);
for (
int i =
1; i < num +
1; ++i) {
res[i] = res[i & (i -
1)] +
1;
}
return res;
}
};
转载请注明原文地址: https://ju.6miu.com/read-24182.html