57. 插入区间
分析
-
遍历并处理不重叠区间(在
newInterval
左侧):- 将所有结束小于
newInterval
开始的区间直接加入结果集
- 将所有结束小于
-
合并重叠区间(与
newInterval
重叠):- 从当前位置开始,合并所有与
newInterval
有重叠的区间。合并时更新newInterval
的左右边界:- 左边界取两者最小值
l = min(l, intervals[k][0])
- 右边界取两者最大值
r = max(r, intervals[k][1])
- 左边界取两者最小值
- 从当前位置开始,合并所有与
-
插入合并后的新区间:
- 将合并后的新区间
[l, r]
插入结果集。
- 将合并后的新区间
-
添加剩余区间(在
newInterval
右侧):- 将剩下的、与
newInterval
不重叠的区间加入结果集。
- 将剩下的、与
时间复杂度
时间复杂度 O(n)
空间复杂度
空间复杂度为 O(n)
C++代码
|
|