问题拆分:
1.给定一个整数n,将其转化为二进制数时,存在多少个1。
采用移位操作,按位和1做运算,统计结果为1的个数。
2.遍历1-n之间的每一个数,然后调用第一步骤的函数,将其计算结果添加到数组中。
func countNum(n int)int{
count := 0
for n != 0{
if n & 1 == 1{
count ++
}
n = n >> 1
}
return count
}
func countBits(n int) []int {
var ans []int
count := 0
for i:=0;i<=n;i++{
count=countNum(i)
ans = append(ans,count)
}
return ans
}