func countBits(num int) []int {
	res := make([]int, num+1)
	if num == 0 {
		return res
	}
	res[1] = 1
	for i, j := 2, 0; i <= num; i++ {
		if i&1 == 0 { // If i is even, bits(i) = bits(i/2)
			j++
			res[i] = res[j]
		} else { // If i is odd, bits(i) = bits(i/2) + 1
			res[i] = res[j] + 1
		}
	}
	return res
}