LeetCode-338. Counting Bits

来源:互联网 发布:kcf跟踪算法 编辑:程序博客网 时间:2020/11/25 12:24

问题:
https://leetcode.com/problems/counting-bits/?tab=Description
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].
给出一个非负整数num,求出0-num范围内的(num+1)个整数,每个整数的二进制表达中1的位数。
分析:
0 1 10 11 100 101 110 111 就是在数字后面不断的加0,加1。 1->10/11 10->100/101 11->110/111 因此第i位就是第i/2位+(i%2)的值。
参考C++代码:

class Solution {public:    vector<int> countBits(int num) {        vector<int> result(num+1,0);        result[0]=0;        for(int i=1;i<num+1;i++){            result[i]=result[i/2]+i%2;        }        return result;    }};
0 0