-
Notifications
You must be signed in to change notification settings - Fork 0
/
longestsubarrayafter1.java
34 lines (29 loc) · 1.06 KB
/
longestsubarrayafter1.java
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
27
28
29
30
31
32
33
34
class Solution {
public int longestSubarray(int[] nums) {
int left = 0; // Left pointer of the sliding window
int maxi = 0; // Maximum length of subarray with only 1's
int zeroCount = 0; // Count of zeros in the current window
for (int right = 0; right < nums.length; right++) {
if (nums[right] == 0) {
zeroCount++;
// If there's more than 1 zeroin window, move left to the position after the previous zero
while (zeroCount > 1) {
if (nums[left] == 0) {
zeroCount--;
}
left++;
}
}
// Update maxSubarrayLength with the current window size
maxi = Math.max(maxi, right - left);
}
if (maxih == nums.length) {
return maxi - 1;
}
// If no zeros in array, delete 1 element to have non-empty subarray of 1's
if (zeroCount == 0) {
return nums.length - 1;
}
return maxi;
}
}