← All topics

Intervals

Merging, inserting, and scheduling ranges.

Intervals

Sort by a boundary, then sweep and merge or count overlaps.

Core syntax

  • Sort by startintervals.sort(key=lambda x: x[0]).
  • Overlap testa[1] >= b[0] when sorted by start.
intervals.sort(key=lambda x: x[0])
merged = [intervals[0]]
for start, end in intervals[1:]:
    if start <= merged[-1][1]:
        merged[-1][1] = max(merged[-1][1], end)
    else:
        merged.append([start, end])

Watch out

  • Decide whether touching endpoints (==) count as overlap.
Full cheat sheet →