leetcode338.比特拉计数

leetcode338.比特拉计数

题目

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

用例

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

求解

/**
 * @param {number} n
 * @return {number[]}
 */
var countBits = function(n) {
    let res =[]
    let top=1
    let start=0
    for(i=0;i<=n;i++){
        if(i==0){
            res.push(0)
        }else if(i==1){
            res.push(1)
        }else(
            res.push(res[start]+1)
        )
        start++
        if(start>top){
            top=i
            start=0
        }
    }
    return res
};
posted @ 2021-12-22 13:34  BONiii  阅读(45)  评论(0)    收藏  举报