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

    示例 1:

    输入:n = 2
    输出:[0,1,1]
    解释:
    0 —> 0
    1 —> 1
    2 —> 10
    示例 2:

    输入:n = 5
    输出:[0,1,1,2,1,2]
    解释:
    0 —> 0
    1 —> 1
    2 —> 10
    3 —> 11
    4 —> 100
    5 —> 101

    1. /**
    2. * @param {number} n
    3. * @return {number[]}
    4. */
    5. var countBits = function (n) {
    6. let dp = [];
    7. dp[0] = 0;
    8. for (let i = 1; i <= n; i++) {
    9. if (i % 2 == 1) {
    10. dp[i] = dp[i - 1] + 1;
    11. } else {
    12. dp[i] = dp[i / 2];
    13. }
    14. }
    15. return dp;
    16. };

    image.png