给定的数组区间,还有一个新区间,将新区间与数组区间重叠的部分合并到一起
这里分成3个阶段来做
1.首部的区间不重合,所以有当前的区间end < 给定区间start
2.开始重合了,这里就有三种情况了
因为这里肯定有重合的出现,才会进入第二个循环,但是判断条件应该是怎样的呢,这里看图可得,肯定会有 当前的首部<=新区间的尾部,所以以此来判断,然后更新新区间的首部以及尾部
3.第三个循环就是也不重叠了,直接将尾部push即可
var insert = function (intervals, newInterval) {
let res = []
let i = 0
while (i < intervals.length && intervals[i][1] < newInterval[0]) {
res.push(intervals[i++])
}
while (i < intervals.length && intervals[i][0] <= newInterval[1]) {
newInterval[0] = Math.min(newInterval[0], intervals[i][0])
newInterval[1] = Math.max(newInterval[1], intervals[i][1])
i++
}
res.push(newInterval)
while (i < intervals.length) {
res.push(intervals[i++])
}
return res
};