在 JavaScript 中以二进制表示的形式计算 1
问题
我们需要编写一个JavaScript函数,它接受一个整数num作为第一个也是唯一的参数。我们的函数应该为0和num之间的每个数字(包括它们两个)准备一个数组,对于每个数字,对应的元素应该是该数字的二进制表示中包含的1的数量。
例如,如果函数的输入是-
const num = 4;
那么输出应该是-
const output = [0, 1, 1, 2, 1];
输出说明:
因为0在其二进制形式中包含0个1,所以1包含1,依此类推。
示例
此代码将是-
const num = 4;
const mapBinary = (num = 0) => {
if (num === 0){
return [0];
};
const res = [0];
for (let i = 1; i <= num; i++) {
const n = i % 2 === 0 ? res[i/2] : res[Math.floor(i/2)] + 1;
res.push(n);
};
return res;
};代码说明:
在计算位时,我们可以记住一些事情以使我们更容易。
numberOfBits(n)===numberOfBits(2*n),第二个结果比第一个结果多一个0位。
如果n是偶数,则n的最后一位将为0。
如果n是奇数,计算结果可以认为是用1替换(n-1)/2的最后一位,所以我们得到等式numberOfBits(n)===numberOfBits(Math.floor(n/2))+1。
输出结果
控制台中的输出将是-
[ 0, 1, 1, 2, 1 ]
热门推荐
10 天气转凉祝福语简短
11 校长退休文案祝福语简短
12 教练生日祝福语 简短独特
13 八一幼儿祝福语大全简短
14 夸赞老师祝福语搞笑简短
15 下雨开工吉祥祝福语简短
16 最真的新春祝福语简短
17 外婆祝福语短句唯美简短
18 圣诞祝福语简短小学