Back to Dashboard

Merge Intervals

Medium

Problem Statement

Given a list of intervals, merge all the overlapping intervals to produce a list that has only mutually exclusive intervals.

Examples

Example 1:

  • Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
  • Output: [[1,6],[8,10],[15,18]]

Approach 1 Merge Intervals:

 class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));
        //comparing to int is slower
        var mergedIntervals = new ArrayList<int[]>();
        var start = intervals[0][0];
        var end = intervals[0][1];
        for (int i = 1; i < intervals.length; i ++) {
            if (intervals[i][0] <= end) {
                end = Math.max(end, intervals[i][1]);
            } else {
                mergedIntervals.add(new int[]{start, end});
                start = intervals[i][0];
                end = intervals[i][1];
            }
        }
        mergedIntervals.add(new int[] {start, end});
        return mergedIntervals.toArray(new int[0][]);
    }
}

Status

Solved

Complexity

Time
O(n log n)
Space
O(1)

Tags

ArrayMerge Intervals

Date

2026-02-22
View Problem Source