七叶笔记 » golang编程 » leetcode 338.Counting Bits—golang

leetcode 338.Counting Bits—golang

问题拆分:

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 
}  

相关文章