DEV Community

Prashant Mishra
Prashant Mishra

Posted on

Pattern: Overlapping intervals

Given list of (start and end time/sequence) we have to merge the overlapping intervals.
eg: Merge Overlapping intervals

class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals, (a,b)-> a[0] - b[0]);// sort by starting time
        List<List<Integer>> list  = new ArrayList<>();
        int start = intervals[0][0]; int end = intervals[0][1];
        for(int i =1;i< intervals.length;i++){
            if(end >= intervals[i][0]){
                end = Math.max(end, intervals[i][1]);
                continue;
            }
            else{
                List<Integer> l = new ArrayList<>();
                l.add(start);
                l.add(end);
                list.add(l);
                start = intervals[i][0];
                end = intervals[i][1];
            }
        }
        List<Integer> l = new ArrayList<>();
        l.add(start);
        l.add(end);
        list.add(l);
        int result[][] = new int[list.size()][2];
        for(int i = 0;i< list.size();i++){
            result[i][0] = list.get(i).get(0);
            result[i][1] = list.get(i).get(1);
        }
        return result;
    }
}
Enter fullscreen mode Exit fullscreen mode

Top comments (0)