LeetCode-in-All

338. Counting Bits

Easy

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.

Example 1:

Input: n = 2

Output: [0,1,1]

Explanation:

0 --> 0
1 --> 1
2 --> 10 

Example 2:

Input: n = 5

Output: [0,1,1,2,1,2]

Explanation:

0 --> 0
1 --> 1
2 --> 10
3 --> 11
4 --> 100
5 --> 101 

Constraints:

Follow up:

Solution

class Solution:
    def countBits(self, num: int) -> List[int]:
        result = [0] * (num + 1)
        borderPos = 1
        incrPos = 1
        
        for i in range(1, len(result)):
            if incrPos == borderPos:
                result[i] = 1
                incrPos = 1
                borderPos = i
            else:
                result[i] = 1 + result[incrPos]
                incrPos += 1
                
        return result