给你一个二进制数组 nums ,你需要从中删掉一个元素。
请你在删掉元素的结果数组中,返回最长的且只包含 1 的非空子数组的长度。
如果不存在这样的子数组,请返回 0 。
来源:力扣(LeetCode) 链接:leetcode.cn/problems/lo…
class Solution {
public int longestSubarray(int[] nums) {
// lsum 表示,在left的左侧有多少个非1的长度;
// rsum表示 在right的左侧有多少个非1的长度
int left = 0, lsum = 0, rsum = 0, ans = 0;
for (int right = 0; right < nums.length; right++) {
rsum = rsum + 1 - (nums[right] == 1 ? 1 : 0);
while (lsum < rsum - 1) {
lsum += 1 - (nums[left] == 1 ? 1:0);
++left;
}
ans = Math.max(ans, right - left);
}
return ans;
}
}