leetcode 338

class Solution {
public:
    vector<int> countBits(int num) {
        vector<int> returnSize;
        returnSize.push_back(0);
        int i =1;
        while(i<=num)
        {
            int tmp=i;
            for(int j =0;j<tmp&&i<=num;j++)
            {
                returnSize.push_back(returnSize[j]+1);
                i++;
            }
        }
        return returnSize;
    }
};

这道题的思路是:

0    00

1    01

2    10

3    11

发现1是在0的基础上加1,2的低一位是和0的低一位相同,3的低一位是和1的低一位相同。同理扩至三位的时候

4  100

5   101

6   110

7   111

可以看出4-7都是在0-3的基础上最高位增加了‘1’。

posted @ 2018-05-06 10:56  Cheney_1016  阅读(108)  评论(0编辑  收藏  举报