1493. Longest Subarray of 1's After Deleting One Element
题目简介
/**
* @param {number[]} nums
* @return {number}
*/
题目给我们一个由 0 与 1 组成的数字数组 nums
要求我们在最多去掉一个 0 的情况下,计算出 nums 中最长的全 1 子数组有多长
最后返回子数组长度
解题思路
这题我们要使用变长滑动窗口的思想
我们使用滑动窗口的右边界遍历数组,当遇到第二个 0 的时候,我们需要更新窗口的左边界
并且在窗口右边界每次移动的时候,我们都需要更新一下当前最长的全 1 子数组长度
最后我们只需要返回我们记录的子数组长度即可
Javascript
/**
* @param {number[]} nums
* @return {number}
*/
var longestSubarray = function (nums) {
let left = 0
let hasZero = false
let res = 0
for (let right = 0; right < nums.length; right++) {
while(nums[right] === 0 && hasZero) {
if(nums[left] === 0) {
hasZero = false
}
left++
}
if(nums[right] === 0) {
hasZero = true
}
res = Math.max(res, right - left)
}
return res
};