Master interval management problems: merging, insertion, overlaps, and gaps.
Need to combine overlapping date/time ranges
Find holes in schedules or time periods
Merge tasks, compress timelines, resolve conflicts
Insert and re‑merge a new interval
Sort intervals by start time before merging
Track current and last merged intervals
You can modify input if not preserving order
Adjacent intervals may or may not count as overlapping
Sort intervals, then merge overlapping ones
function merge(intervals: number[][]): number[][] {
intervals.sort((a, b) => a[0] - b[0])
const res: number[][] = []
for (const interval of intervals) {
if (!res.length || res[res.length - 1][1] < interval[0]) {
res.push(interval)
} else {
res[res.length - 1][1] = Math.max(res[res.length - 1][1], interval[1])
}
}
return res
}Insert a new interval and merge if needed
function insert(intervals: number[][], newInterval: number[]): number[][] {
intervals.push(newInterval)
return merge(intervals)
}Find common free time across all employees
function employeeFreeTime(schedule: number[][][]): number[][] {
const all: number[][] = schedule.flat().sort((a, b) => a[0] - b[0])
const res: number[][] = []
let prevEnd = all[0][1]
for (let i = 1; i < all.length; i++) {
const [start, end] = all[i]
if (start > prevEnd) res.push([prevEnd, start])
prevEnd = Math.max(prevEnd, end)
}
return res
}Merge Intervals
mediumInsert Interval
mediumNon-overlapping Intervals
mediumMeeting Rooms II
mediumMinimum Number of Arrows to Burst Balloons
medium