python 18 lines · 6 steps

How interval merging works

Sort intervals by start, then sweep once, extending or appending as overlaps appear.

Explained by highlit
1from typing import List, Tuple
2 
3 
4def merge_intervals(intervals: List[Tuple[int, int]]) -> List[Tuple[int, int]]:
5 if not intervals:
6 return []
7 
8 ordered = sorted(intervals, key=lambda pair: pair[0])
9 merged = [ordered[0]]
10 
11 for start, end in ordered[1:]:
12 last_start, last_end = merged[-1]
13 if start <= last_end:
14 merged[-1] = (last_start, max(last_end, end))
15 else:
16 merged.append((start, end))
17 
18 return merged
01 / 01
STEP 01

Walkthrough

Space play step click any line
Three takeaways
  1. 1Sorting by start point guarantees any overlap must involve the most recently kept interval.
  2. 2Extending an interval means taking the max of the two ends, since containment is possible.
  3. 3A single linear sweep after sorting resolves all merges without nested comparisons.

Related explainers

Share this explainer

Here's the card — post it anywhere.

How interval merging works — share card
Made with highlit — turn any snippet into a walkthrough like this in about a minute.
Explain your code