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 time O(n) and possibly in a single pass?
  • Can you do it without using any built-in function, such as __builtin_popcount in C++?
Example 1
Inputn = 2
Output[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
Inputn = 5
Output[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

Asked at 10 companies

</>

Your Solution

(Ctrl/Cmd + Enter)

Switching Language

Loading template...

Loading...

Sign in to save your progress

AI code evaluation

Get a correctness verdict, missed edge cases, and complexity analysis of your solution.

Sign in to evaluate