前往此题

算法过程

  1. 按照左区间对数组进行排序
  2. 创建数组res用于存储最终结果以及比对是否与下一个区间是否有重叠,判断条件为前一个区间的有区间是否大于后一个区间的左区间res[-1][1] < interval[0]
  3. 如果没有重叠就放入新数组res否则将该区间与上一个区间进行合并

代码

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort(key=lambda x: x[0])
        res = []

        for interval in intervals:
            if not res or res[-1][1] < interval[0]:
                res.append(interval)
            else:
                res[-1][-1] = max(res[-1][-1], interval[1])
        return res