合并区间
对下面的区间进行合并,
实例如下:
输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
解决问题的思路:
(1)先将区间进行排序(按左区间的大小)
(2)遍历整个list,如上面所示:如果3>2,就更新3为6,然后依次遍历,如果不满足上述的条件,就把该区间增加到result中。
下面是实现的代码:
class Solution: def merge(self, intervals: List[List[int]]) -> List[List[int]]: intervals.sort(key=lambda p:p[0]) ans_list=[] for in_i in intervals: # 如果ans_list最后一个的右区间大于 in_i的左边的数 if ans_list and ans_list[-1][-1]>=in_i[0]: # 更新ans_list最后一个右区间的数,是该值与in_i[1]进行对比后的最大值 ans_list[-1][-1]=max(ans_list[-1][-1],in_i[1]) else: ans_list.append(in_i) return ans_list