- 题目来自力扣
- 文章只记录个人解题思路,并非最优
- 每周一至周五每日一题,周末不更新
57. 插入区间
给出一个无重叠的 ,按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
注意:
不能使用代码库中的排序函数来解决这道题。
实例
输入: intervals = [[1,3],[6,9]], newInterval = [2,5]
输出: [[1,5],[6,9]]
输入: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
输出: [[1,2],[3,10],[12,16]]
解释: 这是因为新的区间 [4,8] 与 [3,5],[6,7],[8,10] 重叠。
链接:leetcode-cn.com/problems/in…
解题
将新的区间push进数组,然后排序,根据之前合并区间的思路,但我感觉这道题应该在考别的,我一时没想到
var insert = function(intervals, newInterval) {
intervals.push(newInterval)
intervals.sort((a, b) => a[0] - b[0])
let res = []
for (let i = 0; i < intervals.length; i++) {
let left = intervals[i]
let right = intervals[i+1] || []
if (left[1] >= right[0] && right.length) {
intervals[i+1] = [left[0], Math.max(left[1], right[1])]
} else {
res.push(left)
}
}
return res
};