Intervals

Array Sweeps

Signal

Merge/insert overlapping intervals, meeting rooms

Template

Sort by start, merge when curr.start <= prev.end.

Worked example (1)

#6

Intervals

Sort + Interval Sweep

Given a list of intervals, merge all that overlap.

function merge(intervals: number[][]): number[][] {
  const sorted = [...intervals].sort((a, b) => a[0] - b[0]);
  const res: number[][] = [];
  for (const [start, end] of sorted) {
    const last = res[res.length - 1];
    if (last && start <= last[1]) last[1] = Math.max(last[1], end); // overlap → extend
    else res.push([start, end]);
  }
  return res;
}
Insight

Once sorted by start, a single left-to-right pass is enough.