CODE

class Solution:
    def countBits(self, n: int) -> List[int]:
        # Trick way
        # 6 --> 110, 13 --> 1101 --> 110-1
        # so bits in 6 + lsb 
        counter = [0]
        for i in range(1, n+1):
            counter.append(counter[i >> 1] + i % 2)
        return counter
        
        # Loops and pattern way
        num_bits = [0 for _ in range(n + 1)]
        counter, i = 1, 1
        while i < len(num_bits):
            c = 0
            while c < counter and i < len(num_bits):
                num_bits[i] = 1 + num_bits[i - counter]
                i, c = i + 1, c + 1
            counter *= 2
        return num_bits
            
        

Last updated