Expedia Sr Soft Engineer 1st Round
Anonymous User
1010

//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;
}
Comments (2)