# leetcode Counting Bits

### leetcode Counting Bits

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]`.

• It is very easy to come up with a solution with run time O(n*sizeof(integer)). But can you do it in linear time O(n) /possibly in a single pass?
• Space complexity should be O(n).
• Can you do it like a boss? Do it without using any builtin function like __builtin_popcount in c++ or in any other language.

C++

Java

Python

## 方法二

res[i /2] 然后看看最低位是否为1即可（上面*2一定是偶数，这边比如15和14除以2都是7，但是15时通过7左移一位并且+1得到，14则是直接左移）

C++

Java

Python

Leetcode , , , , . permalink.

### 8 thoughts on “leetcode Counting Bits”

1. ｈｚ says:

public int[] countBits(int num) {
int[] res = new int[num+1];
res[0] = 0;
int pow2 = 1;

for (int i = 1; i <= num;　 i++) {
if (i 　==　 pow2) {
res[i] = 1;
pow2 <> 1; // 最大的小于ｉ的２的整数幂
res[i] = res[i – before] + 1;
}
}

return res;

}

2. Bayard says:

楼主，这算是动态规划的思想吧？

3. Anqi says:

一直在关注博主的刷题，很棒