โ† Back to Index

๐Ÿ“š Merge Intervals โ€“ Java Cheat Sheet (One Page)

๐Ÿ“Œ What Is It?

The Merge Intervals pattern involves working with overlapping intervals. The goal is to merge overlapping intervals or perform operations like insertion, intersection, or removal of intervals.

๐Ÿงฑ Pattern Template

public int[][] merge(int[][] intervals) {
    if (intervals.length <= 1) return intervals;

    // Sort intervals by start time
    Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0]));

    List result = new ArrayList<>();
    int[] currentInterval = intervals[0];
    result.add(currentInterval);

    for (int[] interval : intervals) {
        int currentEnd = currentInterval[1];
        int nextStart = interval[0];
        int nextEnd = interval[1];

        if (currentEnd >= nextStart) {
            // Overlapping intervals, merge them
            currentInterval[1] = Math.max(currentEnd, nextEnd);
        } else {
            // Non-overlapping interval, add to result
            currentInterval = interval;
            result.add(currentInterval);
        }
    }

    return result.toArray(new int[result.size()][]);
}

โœ… Use Cases

๐Ÿ“˜ Common LeetCode Problems

๐Ÿงช Example: Merge Intervals

Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Intervals [1,3] and [2,6] overlap, so they are merged into [1,6].

๐Ÿ’ก Pro Tips