P120. 连续自然数二进制中 1 的个数

https://algocasts.io/episodes/Qqpn4lmk

也有這種解法,我比較理解。

  1. 先把當前數字的最後一位刪掉,到 d 找對應數字 1 的個數。
  2. 最後再判斷當前數字的最後一位是否為 1 並且加回來。
func countBits(n int) []int {
	d := make([]int, n+1)
	for i := 1; i <= n; i++ {
		d[i] = d[i>>1] + i&1
	}
	return d
}