57.插入区间
插入区间
给你一个 无重叠的,按照区间起始端点排序的区间列表 intervals,其中 intervals[i] = [starti, endi] 表示第 i 个区间的开始和结束,并且 intervals 按照 starti 升序排列。同样给定一个区间 newInterval = [start, end] 表示另一个区间的开始和结束。
在 intervals 中插入区间 newInterval,使得 intervals 依然按照 starti 升序排列,且区间之间不重叠(如果有必要的话,可以合并区间)。
返回插入之后的 intervals。
示例 1:
输入:intervals = [[1,3],[6,9]], newInterval = [2,5]
输出:[[1,5],[6,9]]
示例 2:
输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
输出:[[1,2],[3,10],[12,16]]
提示:
- 0 <= intervals.length <= $10^4$
- intervals[i].length == 2
- 0 <= starti <= endi <= $10^5$
- intervals 根据 starti 按 升序 排列
- newInterval.length == 2
- 0 <= start <= end <= $10^5$
解析
分三个阶段处理:在新区间之前的、与新区间重叠的、在新区间之后的。
1 | |
三阶段处理法思路清晰,时间复杂度 O(n)。
57.插入区间
https://leetcode.lz5z.com/57.insert-interval/