class Solution(object):
def insert(self,intervals,newIntervals):
"""
给你一个 无重叠的 ,按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
:param intervals:
:param newIntervals:
:return:
"""
res = []
new_len = len(newIntervals)
j = 0
while j < new_len:
## flag 用来判断 new_interval 不会重复加入
flag = 0
if len(res) > 0:
intervals = res
res = []
inv_len = len(intervals)
i = 0
while i < inv_len:
if newIntervals[j][1] < intervals[i][0]:
res.append(newIntervals[j])
res.extend(intervals[i:])
flag = 1
#return res
elif newIntervals[j][0] > intervals[i][1]:
res.append(intervals[i])
else:
newIntervals[j][0] = min(newIntervals[j][0], intervals[i][0])
newIntervals[j][1] = max(newIntervals[j][1], intervals[i][1])
i += 1
if flag == 0:
res.append(newIntervals[j])
j += 1
return res
if __name__ == '__main__':
inv = Solution()
intervals = [[2, 5], [7, 9], [10, 11], [13, 14], [19, 29]]
newIntervals = [[15, 17], [18, 26]]
res = inv.insert(intervals, newIntervals)
print(res)
有序列表插入有序列表
最新推荐文章于 2024-08-15 01:55:01 发布