[1,3]
[2,5]
[7,8]
0
1
2
3
4
5
6
7
8
[0][1][2][3][4][5][6][7][8]
The intervals skeleton
▸1sort intervals by start2// overlap(A, B) := B.start <= A.end3cur ← intervals[0]4for B in intervals[1:]:5 if B.start <= cur.end: cur.end = max(cur.end, B.end)6 else: emit cur; cur ← B7emit cur
state
- intervals[1,3] [2,5] [7,8]