1493. Longest Subarray of 1's After Deleting One Element

Leetcode link

题目简介

/**
 * @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
};

results matching ""

    No results matching ""