Longest Subarray of 1's After Deleting One Element LeetCode solution in Java
1class Solution {2public int longestSubarray(int[] nums) {3List<Integer> groups = new ArrayList<>();4for (int i = 0; i < nums.length; i++) {5if (nums[i] == 0) groups.add(nums[i]);6if (nums[i] == 1) {7int count = 0;8while (i < nums.length && nums[i] == 1) {9count++;10i++;11}12groups.add(count);13if (i < nums.length && nums[i] == 0) groups.add(0);14}15}16int max = 0;17if (groups.size() == 1) {18return groups.get(0) - 1;19}20for (int i = 0; i < groups.size(); i++) {21if (i < groups.size() - 2) {22max = Math.max(max, groups.get(i) + groups.get(i + 2));23} else {24max = Math.max(max, groups.get(i));25}26}2728return max;29}30}