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;
}
}
