P120. 连续自然数二进制中 1 的个数
也有這種解法,我比較理解。
- 先把當前數字的最後一位刪掉,到 d 找對應數字 1 的個數。
- 最後再判斷當前數字的最後一位是否為 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
}
也有這種解法,我比較理解。
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
}