最长子串拓展的问题
JesseZhao1990 opened this issue · 0 comments
JesseZhao1990 commented
一个只有0和1的数组,如果将此数组中的某一个0换成1,得到连续1的最大值是多少。
比如 [0,1,1,0,1,1],将第二个0换成1能出现五个连续的1. 所以值是5,
解题思路: 双指针滑动窗口+记录滑动块内的零的数量
function find(arr){
var max = 0;
var p1 =0;
var p2 =1;
var zeroNum = 0;
var length = arr.length;
if(length === 1) return 1;
if(arr[p1]=== 0) zeroNum ++;
if(arr[p2]===0) zeroNum ++;
while(p2<length){
if(p1===p2){
p2++;
if(arr[p2]=== 0) zeroNum ++;
}
if(arr[p2] === 1){
p2++;
if(arr[p2]=== 0) zeroNum ++;
if(p2 == length) max = Math.max(max,p2-p1);
}else{
if(zeroNum<2){
p2++;
if(arr[p2]=== 0) zeroNum ++;
}else{
max = Math.max(max,p2-p1);
if(arr[p1]===0){
zeroNum --;
}
p1++;
}
}
}
return max;
}
var arr1 = [0,1,1,0,0,0,1,1,1,0,1,1,1,0,0,1,1,1,1,0,1,1,1,1,0,0]
var arr2 = [0,1,1,0]
var arr3 = [0,1]
var arr4 = [0]
var arr5 = [1]
console.log(find(arr1))
console.log(find(arr2))
console.log(find(arr3))
console.log(find(arr4))
console.log(find(arr5))