Merge overlapping intervals (e.g. promotion periods)

Backend Live Coding November 13, 2026 python

O(n log n) because of the sorting.

python
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# ======================================================================
# Q: Merge overlapping intervals (e.g. promotion periods).
#
# O(n log n) because of the sorting.
# ======================================================================

def merge(intervals: list[tuple[int, int]]) -> list[tuple[int, int]]:
    result = []
    for start, end in sorted(intervals):
        if result and start <= result[-1][1]:
            result[-1] = (result[-1][0], max(result[-1][1], end))
        else:
            result.append((start, end))
    return result

merge([(1, 3), (2, 6), (8, 10), (9, 12)])   # [(1, 6), (8, 12)]