1.代码
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
result = []
for item1 in intervals:
flag = False
save = []
for item2 in result:
if(if_overlap(item1,item2)):
flag = True
save.append(item2)
if(flag):
newitem = []
left = item1[0]
for i in save:
if(i[0]<left):
left = i[0]
right = item1[1]
for i in save:
if(i[1]>right):
right = i[1]
newitem.append(left)
newitem.append(right)
for i in save:
del result[result.index(i)]
result.append(newitem)
else:
result.append(item1)
return result
def if_overlap(list1:List[int],list2:List[int]) -> bool:
if(list1[1]<list2[0]):
return False
if(list1[0]>list2[1]):
return False
return True
2.思路
构造一个List[List[int]]的result列表来记录合并区间的结果,对于intervals中的每个区间,判断它是否与result中已有的区间重叠,如果没有重叠,就直接把当前区间加入result,如果有重叠,就把所有重叠的小区间合成一个大区间,在result中删除这些小区间并加入大区间。