给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。
示例 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
说明 :
0 <= n <= 105
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/w3tCBm
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
var countBits = function(n) {
let res = [] //用来存放每个数的1 的个数
for(let i = 0; i <=n; i++) { //按循环一个一个来比对
let num = i
let l = 0 //此变量用来计数1的个数
while(num){
num = num & (num - 1)
l++
}
res.push(l)
}
return res
};