Merge overlapping intervals
Merge sorted by start value overlapping intervals
by Alex Myronov
JavaScript
const merge = (intervals) => {
const stack = []
intervals.forEach((interval) => {
if (!stack.length) {
stack.push(interval)
return
}
const last = stack[stack.length - 1]
if (interval[0] <= last[1]) {
stack[stack.length - 1][1] = Math.max(interval[1], last[1])
} else {
stack.push(interval)
}
})
return stack
}
const intervals = [[1, 5], [2, 3], [4, 6], [7, 8], [8, 10], [12, 15]]
console.log(merge(intervals))