Skip to content

Merge Intervals

# O(N)


def merge_intervals(intervals):
    # Sort the intervals by their start time
    intervals = sorted(intervals, key=lambda x: x[0])

    # Initialize the merged intervals list with the first interval
    merged = [intervals[0]]

    # Iterate through the remaining intervals
    for interval in intervals[1:]:
        # If the current interval overlaps with the last merged interval, merge them
        if interval[0] <= merged[-1][1]:
            merged[-1][1] = max(merged[-1][1], interval[1])
        # Otherwise, add the current interval to the merged list
        else:
            merged.append(interval)

    return merged