封面

1493. 删掉一个元素以后全为 1 的最长子数组

写作时间:2026-05-02 15:06
# 力扣算法专题
# 滑动窗口

1493. 删掉一个元素以后全为 1 的最长子数组 - 力扣(LeetCode)

条件约束为:

  • 只包含 1 的非空子数组
  • 必须删除一个元素

思路:

  • 转化为:最长的最多包含一个 0 的子数组长度 - 1
  • 右边进 -> 记录数组 0 的个数(count)-> count > 1 触发左边出 -> 记录结果
class Solution {
    public int longestSubarray(int[] nums) {
        int count=0;
        int res=0;
        int left=0;
        for(int i=0;i<nums.length;i++){
            if(nums[i]!=1){
                count++;
            }
            while(count>1){
                if(nums[left]!=1){
                    count--;
                }
                left++;
            }
            // +1 是指 left~i 这段的长度,-1 是指强制删除一个元素
            res=Math.max(res,i-left+1-1);
        }
        return res;
    }
}