leetcode 338 Counting Bits C++

来源:互联网 发布:淘口令算淘宝客吗 编辑:程序博客网 时间:2024/05/02 05:01

笨方法

    vector<int> countBits(int num) {        vector<int> vec;        for(int i = 0;i<=num;i++){            int tmp = i;            int count = 0;            while(tmp != 0){                if((1&tmp) == 1) count++;                tmp >>= 1;            }            vec.push_back(count);        }        return vec;    }

动态规划方法,当前1的个数为最后一位1的个数加上前面部分1的个数。O(n)

    vector<int> countBits(int num) {        vector<int> vec(num + 1,0);        for(int i = 1;i<=num;i++){            vec[i] = vec[i>>1] + (i&1);         }        return vec;    }


0 0