[1,3]
[6,8]
new [2,4]
0
1
2
3
4
5
6
7
8
[0][1][2][3][4][5][6][7][8]
Three-phase sweep
▸1out ← []; i ← 02// phase 1: intervals entirely before new3while i < n and intervals[i].end < new.start:4 out.append(intervals[i]); i++5// phase 2: merge every overlapping interval into new6 while i < n and intervals[i].start <= new.end:7 new = [min(starts), max(ends)]; i++8out.append(new)9// phase 3: copy the rest10while i < n: out.append(intervals[i]); i++11return out
state
- intervals[1,3] [6,8]
- new[2,4]
- out[]