思路:先排序,再依次合并
我的代码↓
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
ans_list=[]
# 先将intervals的start从小到大排序
sorted_intervals=sorted(intervals,key=lambda x:x[0])
index=0
while True:
# 边界
left=sorted_intervals[index][0]
right=sorted_intervals[index][1]
# 若下一组区间可以合并
while index<len(sorted_intervals)-1 and right>=sorted_intervals[index+1][0]:
index+=1
right=max(right,sorted_intervals[index][1])
ans_list.append([left,right])
if index==len(sorted_intervals)-1:
return ans_list
index+=1
官方题解:排序
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort(key=lambda x: x[0])
merged = []
for interval in intervals:
# 如果列表为空,或者当前区间与上一区间不重合,直接添加
if not merged or merged[-1][1] < interval[0]:
merged.append(interval)
else:
# 否则的话,我们就可以与上一区间进行合并
merged[-1][1] = max(merged[-1][1], interval[1])
return merged