leetcode-57 插入区间
题目描述
给你一个 无重叠的 , 按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
解题思路
解题思路参考leetcode
运行效率
代码如下
function insert(intervals: number[][], newInterval: number[]): number[][] {
const merge = [];
let index = 0;
for (; index < intervals.length; index++) {
const element = intervals[index];
if (newInterval[1] < element[0]) {
break;
} else if (newInterval[0] > element[1]) {
continue;
} else {
merge.push(index);
}
}
if (merge.length) {
shouldMerge();
} else if (index === intervals.length) {
intervals.push(newInterval);
} else {
index === 0
? intervals.unshift(newInterval)
: intervals.splice(index, 0, newInterval);
}
return intervals;
function shouldMerge() {
intervals.splice(merge[0], merge.length, [
newInterval[0] > intervals[merge[0]][0]
? intervals[merge[0]][0]
: newInterval[0],
newInterval[1] > intervals[merge[merge.length - 1]][1]
? newInterval[1]
: intervals[merge[merge.length - 1]][1],
]);
}
}