source: https://leetcode.com/problems/longest-subarray-of-1s-after-deleting-one-element/description/
Table of Contents
Longest Subarray of 1’s After Deleting One Element
Description
Given a binary array nums, you should delete one element from it.
Return the size of the longest non-empty subarray containing only 1’s in the resulting array. Return 0 if there is no such subarray.
Example 1:
Input: nums = [1,1,0,1]
Output: 3
Explanation: After deleting the number in position 2, [1,1,1] contains 3 numbers with value of 1’s.
Example 2:
Input: nums = [0,1,1,1,0,1,1,0,1]
Output: 5
Explanation: After deleting the number in position 4, [0,1,1,1,1,1,0,1] longest subarray with value of 1’s is [1,1,1,1,1].
Example 3:
Input: nums = [1,1,1]
Output: 2
Explanation: You must delete one element.
Constraints:
- 1 <= nums.length <= 105
- nums[i] is either 0 or 1.
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
class Solution { public int longestSubarray(int[] nums) { int left = 0; int right = 0; int countZero = 0; int max =0; while(left <= right && right < nums.length){ if(nums[right]==0){ countZero++; } while(countZero>=2 && left<right){ if(nums[left]==0){ countZero--; } left++; } max = Math.max(max, right - left); right++; } return max; } } |