leetcode刷题-56合并区间

题目

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

示例 1:

输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]

思路

通过设置一个移动的判定区间,来完成区间的合并

首先对数组排序,使其以左区间为标准,从小到大,依次排序,然后依次读出数组:

当取出的数组的left <= 判定区间right 且取出的数组的right >= 判定区间right :则认为两个区间有重合,合并区间

当取出的数组的left > 判定区间right:不存在重合,当新区间作为判定区间。

实现

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort()
        result = list()
        if not intervals:
            return []
        result.append(intervals[0])
        for idx in intervals:
            left = result[-1][0]
            right = result[-1][1]
            if idx[0] <= right and idx[1] >= right:
                result[-1][1] = idx[1]
            elif idx[0] > right:
                result.append(idx)
        return result
原文地址:https://www.cnblogs.com/mgdzy/p/13438663.html