Merge Intervals LeetCode solution in JavaScript

1
/**
2
* @param {number[][]} intervals
3
* @return {number[][]}
4
*/
5

6
var merge = function (intervals) {
7
// sorting the intervals array first is a general good first step
8
intervals.sort((a, b) => a[0] - b[0]);
9
const result = [];
10
// i am using the result array as a way to compare previous and next intervals
11
result.push(intervals[0]);
12
for (let i = 1; i < intervals.length; i++) {
13
const prevInterval = result[result.length - 1];
14
const interval = intervals[i];
15

16
if (prevInterval[1] >= interval[0]) {
17
// overlap detected
18
const [l, r] = result.pop();
19
// if overlap, merge intervals by taking min/max of both boundaries
20
const newL = Math.min(l, interval[0]);
21
const newR = Math.max(r, interval[1]);
22
result.push([newL, newR]);
23
} else {
24
result.push(intervals[i]);
25
}
26
}
27
return result;
28
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0