Insert Interval LeetCode solution in JavaScript

1
var insert = function (intervals, newInterval) {
2
//Edge case
3
if (intervals.length === 0) {
4
return [newInterval];
5
}
6
//Find the index to insert newIntervals
7
let current = 0;
8
while (current < intervals.length && intervals[current][0] < newInterval[0]) {
9
current++;
10
}
11
intervals.splice(current, 0, newInterval);
12
//If newInterval is not the last index, check the element behigh newInterval to see if merge is needed
13
if (current !== intervals.length - 1) {
14
let pointer = current + 1;
15
if (intervals[pointer][0] <= newInterval[1]) {
16
while (
17
pointer < intervals.length &&
18
intervals[pointer][0] <= newInterval[1]
19
) {
20
pointer++;
21
}
22
newInterval[1] = Math.max(newInterval[1], intervals[pointer - 1][1]);
23
intervals.splice(current + 1, pointer - (current + 1));
24
}
25
}
26
//If newInterval is not the first index, check the element berfore newInterval to see if merge is needed
27
if (current !== 0) {
28
if (intervals[current - 1][1] >= newInterval[0]) {
29
newInterval[0] = intervals[current - 1][0];
30
newInterval[1] = Math.max(newInterval[1], intervals[current - 1][1]);
31
intervals.splice(current - 1, 1);
32
}
33
}
34
return intervals;
35
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0