原题链接:Counting Bits
题解:
class Solution {
public:
vector<int> countBits(int num) {
/*
i的1的个数等于i>>1+i&1的,然而i>>1在已经计算出来
Time Complexity:O(N)
Space Complexity:O(N)
*/
vector<int>ivec(num+1,0);
for(int i=1;i<=num;i++){
ivec[i]=ivec[i>>1]+(i&1);
}
return ivec;
}
};
本文提供了一种解决计数位数问题的有效方法。通过利用i的1的个数等于i>>1+i&1的特性,实现了一个时间复杂度为O(N)、空间复杂度为O(N)的算法。此算法可以高效地计算出从0到num之间的所有整数中1的个数。
221

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



