class Solution:
    def merge(self , intervals: List[Interval]) -> List[Interval]:
        # write code here
        res=[]
        intervals.sort(key=lambda x:x.start)
        for i in range(len(intervals)):
            if not res or intervals[i].start>res[-1].end:
                res.append(intervals[i])
            else:
                res[-1].end=max(intervals[i].end,res[-1].end)
        return res

思路:

  1. 将列表按开始位置排序
  2. 新建结果列表。
  3. 遍历原列表中的区间。如果区间的开头小于等于结果列表最新区间的结尾,说明两者是包含关系,需要合并。合并就是取两个区间的结尾最大值作为新结尾。(画图更清晰)
  4. 否则说明当前列表不需要合并,直接添加到结果列表中。