JavaScript 中具有 0 和 1 的连续子数组
问题:
我们需要编写一个 JavaScript 函数,它接受一个二进制数组 arr(一个只包含 0 或 1 的数组)。我们的函数应该从由相同数量的 1 和 0 组成的数组中返回连续子数组的长度。
例如,如果函数的输入是 -
const arr = [1, 0, 0, 1, 0, 1, 0, 0];
那么输出应该是 -
const output = 6;
输出说明
数组的前6个元素是1, 0, 0, 1, 0, 1(三个1和三个0)
示例
此代码将是 -
const arr = [1, 0, 0, 1, 0, 1, 0, 0];const findMaxLength = (arr = []) => {
const { length } = arr;
if (length < 2){
return 0
};
const map = new Map();
map.set(0, -1);
let sum = 0;
let max = 0;
for (var i = 0; i < length; i++) {
sum += arr[i] === 0 ? -1 : 1;
if (map.has(sum)) {
max = Math.max(max, i - map.get(sum));
} else {
map.set(sum, i);
};
};
return max;
};
console.log(findMaxLength(arr));
代码说明
这里,我们把0看作-1,1看作1,计算不同窗口的总和,当总和为0时,我们知道子数组必须有相同的0和1数。
输出结果
控制台中的输出将是 -
6
以上是 JavaScript 中具有 0 和 1 的连续子数组 的全部内容, 来源链接: utcz.com/z/322874.html