您的位置:首页 > 其它

leetcode338

2016-07-20 14:41 218 查看
对于0-7

000-----ve[0]=0

001 ----1的个数取决于1%2+ve[0]

010-----1的个数取决于2%2+ve[1]

011-----1的个数取决于3%2+ve[1]

100-----1的个数取决于4%2+ve[2]

101-----1的个数取决于5%2+ve[2]

110-----1的个数取决于6%2+ve[3]

111-----1的个数取决于7%2+ve[3]

从低位考虑的话,除了最低位外的1的个数位ve[i>>1],其中i>>1可以提前算出来,再加上最低位的1的个数就可以得出i的二进制1的个数了

代码如下:

class Solution {
public:
vector<int> countBits(int num) {
int i;
vector<int>ve(num+1,0);
for(i=0;i<=num;i++)
ve[i]=ve[i>>1]+i%2;
return ve;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: