57. 插入区间
https://leetcode-cn.com/problems/insert-interval/
解法一:
先找交叠的起始,再找交叠的终止。注意处理边界情况 至于为何要在第二次while中每次更新?因为插入段与原序列的元素区间可能存在包含关系,这样可以避免遗漏
class Solution:
def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:
n = len(intervals)
if n == 0: #序列为空,直接插入返回
return [newInterval]
res = []
i = 0
#处理new之前的非交叠段,直接加入res
while i < n and newInterval[0] > intervals[i][1]:
res.append(intervals[i])
i += 1
#此时进入交叠段
#走出交叠段之前,每段合并一次
while i < n and newInterval[1] >= intervals[i][0]:
newInterval = [min(intervals[i][0], newInterval[0]), \
max(intervals[i][1], newInterval[1])]
i += 1
#将合并后的交叠段写入
res.append(newInterval)
#剩下的非交叠段,直接写入
for i in range(i, n):
res.append(intervals[i])
return res
最后更新于