leetcode 1493. 删掉一个元素以后全为 1 的最长子数组
题目如下
数据范围
本题可以理解为寻找一个最长窗口其中窗口最多只包含一个0。
那么我们可以尝试固定窗口的右端移动左端点使之满足上述条件。
通过代码
class Solution {
public:
int longestSubarray(vector<int>& nums) {
int n = nums.size();
int max1 = -1;
int count = 0;
for(int i = 0,j = 0;i < n;i++){
if(nums[i] == 0)count++;
while(count > 1){
if(nums[j++] == 0)count--;
}
max1 = max(max1,i - j);
}
return max1;
}
};