2022-01-02 II 003. 前 n 个数字二进制中 1 的个数

如果正整数 i 是一个偶数,那么 i 相当于将 i/2 左移一位的结果,因此偶数 i 和 i/2 的二进制形式 1 的个数是一样的 如果 i 是奇数,那么 i 相当于将 i/2 左移一位之后再将最右边的位设为 1 的结果,因此奇数 i 比 i/2 的二进制形式 1 的个数多 1 个 可以利用这个规律有如下代码
Go版本:

func countBits(n int) []int {

    var res []int;

    for i:=0;i<=n;i++{
        res=append(res,0);
    }
     for i:=0;i<=n;i++{
        res[i]=res[i>>1]+(i&1);
     
    }
    return res;
}

你可能感兴趣的:(2022-01-02 II 003. 前 n 个数字二进制中 1 的个数)