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