> For the complete documentation index, see [llms.txt](https://mayanktyagi3111.gitbook.io/interview-prep/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mayanktyagi3111.gitbook.io/interview-prep/strings-arrays-and-2-pointers/merge-overlapping-intervals.md).

# Merge Overlapping Intervals

Given a collection of intervals, merge all overlapping intervals.

**For example:**

Given `[1,3],[2,6],[8,10],[15,18]`,

return `[1,6],[8,10],[15,18]`.

Make sure the returned intervals are sorted.

```java
public class Solution {
    public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
        Collections.sort(intervals, (a, b) -> a.start - b.start);
        ArrayList<Interval> ans = new ArrayList<>();
        for (int i = 0; i < intervals.size(); i++) {
            Interval t = intervals.get(i);
            while ((i + 1) < intervals.size() && t.end >= intervals.get(i + 1).start) {
                t.end = Math.max(intervals.get(i + 1).end, t.end);
                i++;
            }
            ans.add(t);
        }
        return ans;
    }
}
```
