338. 比特位计数

目录

338. 比特位计数

easy

给你一个整数 n ,对于 0 <= i <= n 中的每个 i ,计算其二进制表示中 1 的个数 ,返回一个长度为 n + 1 的数组 ans 作为答案。

示例 1:

1
2
3
4
5
6
输入:n = 2
输出:[0,1,1]
解释:
0 --> 0
1 --> 1
2 --> 10

DP

考虑奇数、偶数两种情况

https://markdown-1303167219.cos.ap-shanghai.myqcloud.com/image-20220815112622104.png

1
2
3
4
5
6
7
8
func countBits(n int) []int {
	dp := make([]int, n+1)
	dp[0] = 0
	for i := 1; i <= n; i++ {
		dp[i] = dp[i>>1] + i&1
	}
	return dp
}
image-20220815112630113