Mathworks EDG New grad | OA 2020 | Widest Gap
Problem screenshots

image
image
image
image

My Solution
public static int widestGap(int n, List<Integer> start, List<Integer> finish) {
        List<Interval> intervals = new ArrayList<>();
        for(int i =0;i<start.size();i++){
            Interval inter = new Interval(start.get(i), finish.get(i));
            intervals.add(inter);
        }

        Collections.sort(intervals, new Comparator<Interval>(){
            public int compare(Interval i1, Interval i2){
                return i1.start - i2.start;
            }
        });
        LinkedList<Interval> merged = new LinkedList<>();
        for(Interval i: intervals){
            if(merged.isEmpty() || merged.getLast().end < i.start ){
                merged.add(i);
            }else{
                merged.getLast().end=Math.max(merged.getLast().end, i.end);
            }
        }

        int max= -1;
        for(int i=0;i<merged.size()-1;i++){
            int gapStart = merged.get(i).end;
            int gapEnd = merged.get(i+1).start;
            if(gapEnd-gapStart > max)
                max = gapEnd - gapStart -1;
        }
        max = Math.max(max, merged.get(0).start-1);
        max = Math.max(max, n- merged.get(merged.size()-1).end);
        return max;
    }

}
Comments (5)