JavaScript 中 n 次交换后的最大连续 1
问题
我们需要编写一个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
热门推荐
10 爱情贺卡祝福语简短英语
11 娃娃考试祝福语幽默简短
12 结婚祝福语简短精辟 兄弟
13 表达朋友的祝福语简短
14 春节感恩祝福语简短的
15 结婚祝福语粤语大全简短
16 恭喜朋友升职祝福语简短
17 圣诞饭店祝福语大全简短
18 建工系毕业祝福语简短