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.
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
- Medium01
Insert Interval
Slide the new interval into its sorted slot, then merge.
- Medium02
Merge Intervals
The one you just watched. Write it from memory.
- Medium03
Non-overlapping Intervals
Count the overlaps to remove instead of merging them.
- Easy04
Meeting Rooms
LeetCode PremiumWarm-up: sort by start; any overlap means a clash.
- Medium05
Meeting Rooms II
LeetCode PremiumTrack how many meetings run at once; keep the peak.