在 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 ]
以上是 在 JavaScript 中以二进制表示的形式计算 1 的全部内容, 来源链接: utcz.com/z/311401.html