Counting Bits
Given an integer n, return an array ans of length n + 1 such that for each i (0 <= i <= n), ans[i] is the number of 1's in the binary representation of i.
Follow up:
- It is very easy to come up with a solution with a runtime of
O(n log n). Can you do it in linear timeO(n)and possibly in a single pass? - Can you do it without using any built-in function, such as
__builtin_popcountin C++?
Example 1
Input
n = 2Output
[0,1,1]The binary representations from 0 to 2 are 0, 1, and 10, which contain 0, 1, and 1 ones respectively.
Example 2
Input
n = 5Output
[0,1,1,2,1,2]The binary representations from 0 to 5 contain 0, 1, 1, 2, 1, and 2 ones respectively.
Constraints
- 0 <= n <= 10^5