JavaScript 中 n 次交换后的最大连续 1
javascriptweb developmentfront end technology
问题
我们需要编写一个 JavaScript 函数,该函数接受一个二进制 arr(仅包含 0 或 1 的数组)arr 作为第一个参数,以及一个数字 num 作为第二个参数。
我们最多可以将数组中存在的 num 个 0 更改为 1,并且我们的函数应该返回进行这些更改后仅包含 1 的最长(连续)子数组的长度。
例如,如果函数的输入是 −
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]; const num = 2;
那么输出应该是 −
const output = 6;
输出解释
因为将两个零改为 1 后,数组的最后 6 个元素将为 1。
示例
其代码为 −
const arr = [1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]; const num = 2; const longestOnes = (arr = [], num = 1) => { let max = 0; let left = 0; let curr = num; for(let right = 0; right < arr.length; right++){ if(arr[right] === 0){ curr -= 1; }; while(curr < 0){ if(arr[left] === 0){ curr += 1; }; left += 1; }; max = Math.max(max, right - left + 1); }; return max; }; console.log(longestOnes(arr, num));
输出
控制台中的输出将是 −
6