Skip to content

Start typing to search patterns, problems and pages.

Intervals

Lay every meeting of a shared day on one timeline in start order. Meetings that overlap or touch fuse into one busy block. What is left is the day’s true shape, with every gap visible.

⏱ about 15 minutesNeeds: sorting, arraysTime O(n log n)

2 · Watch

No sound? Captions are on by default.

3 · Now you drive

Keys:←→ stepSpace playR reset

Merge Intervals

or try
1–6 intervals like 1-3, with 0 ≤ start ≤ end ≤ 20, separated by spaces.
Here are the intervals as bars on a number line.Step 1 of 7. 4 intervals on a 0 to 20 line: 1 to 3, 2 to 6, 8 to 10, 15 to 18. Not sorted yet.
Step 1 of 7
solution.ts▶ marks the line running now
function merge(intervals: number[][]): number[][] {
intervals.sort((a, b) => a[0] - b[0]);
const merged: number[][] = [intervals[0]];
for (let i = 1; i < intervals.length; i++) {
const last = merged[merged.length - 1];
const [start, end] = intervals[i];
if (start <= last[1]) {
last[1] = Math.max(last[1], end);
} else {
merged.push([start, end]);
}
}
return merged;
}

4 · Your turn

0 of 5 problems solved
  1. Medium01

    Insert Interval

    Slide the new interval into its sorted slot, then merge.

  2. Medium02

    Merge Intervals

    The one you just watched. Write it from memory.

  3. Medium03

    Non-overlapping Intervals

    Count the overlaps to remove instead of merging them.

  4. Easy04

    Meeting Rooms

    LeetCode Premium

    Warm-up: sort by start; any overlap means a clash.

  5. Medium05

    Meeting Rooms II

    LeetCode Premium

    Track how many meetings run at once; keep the peak.

THAT’S ALL 15See every pattern