56. Merge Intervals

class Solution {
    public int[][] merge(int[][] intervals) {
        List<int[]> res = new ArrayList<int[]>();
        
        //sort the array by the first number of the inner array;
        Arrays.sort(intervals, (i1, i2)->Integer.compare(i1[0], i2[0]));
        
        int[] merged = intervals[0];
        for(int[] interval: intervals){
            if(interval[0]<=merged[1]){
                // set merged[1] to the larger element;
                merged[1]=Math.max(interval[1], merged[1]);
            }else{
                res.add(merged);
                merged = interval;
            }
        }
        
        res.add(merged);
        return res.toArray(new int[res.size()][]);
    }
}

Last updated