> For the complete documentation index, see [llms.txt](https://ucan.gitbook.io/notes/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ucan.gitbook.io/notes/56.-merge-intervals.md).

# 56. Merge Intervals

```java
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()][]);
    }
}
```
