1493. Longest Subarray of 1's After Deleting One Element
Array Dynamic Programming Sliding Window
이진 배열 nums에서 반드시 하나의 요소를 삭제해야 할 때, 남은 배열에서 오직 1만으로 이루어진 연속된 부분 배열 중 가장 긴 것의 길이를 반환하는 문제
1만으로 이루어진 연속된 부분 배열이 존재하지 않는다면 0 반환0을 최대 1개만 포함하는 구간 유지0이 2개 이상 들어오면 left 포인터를 오른쪽으로 이동시켜 0의 개수를 1개 이하로 유지right - left이며, 이 중에서 가장 큰 값을 maxLen으로 저장하고 최종적으로 반환/**
* @param {number[]} nums
* @return {number}
*/
var longestSubarray = function (nums) {
let left = 0;
let zeroCount = 0;
let maxLen = 0;
for (let right = 0; right < nums.length; right++) {
if (nums[right] === 0) {
zeroCount++;
}
while (zeroCount > 1) {
if (nums[left] === 0) {
zeroCount--;
}
left++;
}
maxLen = Math.max(maxLen, right - left);
}
return maxLen;
};