[LeetCode338]Counting Bits

来源:互联网 发布:python 迭代器 生成器 编辑:程序博客网 时间:2024/04/29 17:43

Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate the number of 1's in their binary representation and return them as an array.

Example:

For num = 5 you should return [0,1,1,2,1,2].

对从0到num的每一个数进行模2再除以2的运算,如果对2取模等于1,则1的个数加1,通过这种方法来计算这个数用二进制表示时1的个数,思路比较直接。虽然能够通过测试样例,但时间复杂度相对比较高,为O(nlogn)。希望自己能够找到时间复杂度更低的算法。

class Solution {public:    vector<int> countBits(int num) {        vector<int> r;        r.push_back(0);        int count;        for(int i=1;i<=num;i++)        {            count=0;            int n=i;            while(n>0)            {                if(n%2==1)                {                    count++;                }                n/=2;            }            r.push_back(count);        }        return r;    }};


0 0
原创粉丝点击