//原理:2(1*2+0)就是在1的二进制表示后面加0(即和1的位数相同),3(1*2+1)就是在1的二进制表示后面加1(即比1的位数多1),4(2*2+0)就是在2的二进制表示后面加0(即和2的位数相同),5(2*2+1)就是在2的二进制表示后面加1(即比2的位数多1),以此类推。
class Solution {
public:
vector<int> countBits(int num) {
vector<int> ivec;
ivec.push_back(0);
for(int i=1;i<=num;i++)
ivec.push_back(ivec[i>>1]+(i&1));
return ivec;
/*vector<int> ivec;
ivec.push_back(0);
if(num>=1)
ivec.push_back(1);
int i=2;
while(i<=num)
{
ivec.push_back(ivec[i/2]);
if(i+1<=num)
ivec.push_back(ivec[i/2]+1);
i+=2;
}
return ivec;*/
}
};
338. Counting Bits
最新推荐文章于 2020-10-07 11:59:39 发布