插入区间
给你一个 无重叠的 ,按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
示例 1:
输入:intervals = [[1,3],[6,9]], newInterval = [2,5]
输出:[[1,5],[6,9]]
1
2
2
/**
* @param {number[][]} intervals
* @param {number[]} newInterval
* @return {number[][]}
*/
var insert = function(intervals, newInterval) {
let len = intervals.length
if(len === 0) return [newInterval]
if(intervals[len - 1][0] <= newInterval[0]) {
intervals.push(newInterval)
} else {
for(let i = 0; i < len; i++) {
if(newInterval[0] <= intervals[i][0]){
intervals.splice(i, 0, newInterval)
break
}
}
}
let ans = []
for(let i = 0; i < intervals.length; i++) {
if(!ans.length || intervals[i][0] > ans[ans.length - 1][1]) {
ans.push(intervals[i])
} else {
ans[ans.length - 1] = [ans[ans.length - 1][0], Math.max(ans[ans.length - 1][1], intervals[i][1])]
}
}
return ans
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/insert-interval