题目

给出一个区间的集合,请合并所有重叠的区间。
image.png

思路

首先按照起始点进行排序,然后一一合并。
(什么时候需要合并,什么时候不需要合并,画两条线段比划一下就知道条件了)

  1. class Solution:
  2. def merge(self, intervals: List[List[int]]) -> List[List[int]]:
  3. intervals.sort(key=lambda x: x[0])
  4. merged = []
  5. for interval in intervals:
  6. # 如果列表为空,或者当前区间与上一区间不重合,直接添加
  7. if not merged or merged[-1][1] < interval[0]:
  8. merged.append(interval)
  9. else:
  10. # 否则的话,我们就可以与上一区间进行合并
  11. merged[-1][1] = max(merged[-1][1], interval[1])
  12. return merged