Insert newInterval into a sorted list of non-overlapping intervals, merging where necessary so the list stays sorted and non-overlapping.
The list is sorted and disjoint. Copy intervals that end before the new one, merge every interval that overlaps it, then copy the rest.
1function insert(intervals: number[][], newInterval: number[]): number[][] {2const res: number[][] = [];3let [s, e] = newInterval, i = 0;4while (i < intervals.length && intervals[i][1] < s) res.push(intervals[i++]);5while (i < intervals.length && intervals[i][0] <= e) {6s = Math.min(s, intervals[i][0]);7e = Math.max(e, intervals[i][1]);8i++;9}10res.push([s, e]);11while (i < intervals.length) res.push(intervals[i++]);12return res;13}
emptyMerging window starts as [4,8].
Space: play/pause · ←/→: step