//Input Arr - {2,3,5,6,8}
// Return subarrays which contain adjacent elements and maximum of 1 odd number in subarray
//Output: {{2},{2,3},{3},{5},{5,6},{5,6,8},{6},{6,8},{8}}
// Solved it s using Sliding Window and o(n2) run time.
public static List<List<Integer>> subArrays(int[] arr) {
List<List<Integer>> result = new ArrayList<>();
int start= 0 ;
int end=0;
int max=0;
while(start<arr.length) {
List<Integer> temp = new ArrayList<>();
for(int i=start; i<=end && i<arr.length; i++) {
if(arr[i]%2 != 0) {
max++;
}
if(max>1) break;
temp.add(arr[i]);
}
if(max>1 || end == arr.length) {
start++;
end = start;
} else {
end++;
result.add(temp);
}
max=0;
}
return result;
}