Skip to main content

Intervals

This technique is very useful when dealing with intervals, overlapping items or merging intervals.

Merge Intervals

How to Identify

  • Data Structure Involves: Array
  • Question Type: When asked to deal with problems involving intervals, overlapping items or merging intervals.

Example

Merge Intervals

Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.

Example
Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlap, merge them into [1,6].
Typescript
function merge(intervals: number[][]): number[][] {
const inputLength = intervals.length
if(inputLength === 0) return []

intervals.sort((a, b) => a[0] - b[0])
const result: number[][] = [intervals[0]]

for(let [start, end] of intervals){
const lastEnd = result.slice(-1)[0][1]

if(start <= lastEnd) {
result.slice(-1)[0][1] = Math.max(lastEnd, end)
} else {
result.push([start, end])
}
}

return result
}
ProblemsDifficulty
1Meeting Rooms (Leetcode Premium)Easy
2Merge IntervalsMedium
3Non-overlapping IntervalsMedium
4Meeting Rooms II (Leetcode Premium)Medium
5Insert IntervalHard