区间合并

区间合并

示例 1:
输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

垃圾写法

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        if len(intervals) <= 1:
            return intervals
        res = sorted(intervals, key = lambda x: x[0])
        def merge(a, b):
            if b[0] <= a[1] and b[0] >= a[0]:
                if b[1] <= a[1]:
                    return a
                else:
                    return [a[0], b[1]]
        res2 = []
        i = 1
        tmp = res[0]
        while i < len(res):
            if res[i][0] <= tmp[1]:
                # print(tmp, res[i])
                tmp = merge(tmp, res[i])
            else:
                res2.append(tmp)
                # res2.append(res[i])
                tmp = res[i]
            i += 1
        res2.append(tmp)
        return res2
                

参考答案

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

        merged = []
        for interval in intervals:
            # 如果列表为空,或者当前区间与上一区间不重合,直接添加
            if not merged or merged[-1][1] < interval[0]:
                merged.append(interval)
            else:
                # 否则的话,我们就可以与上一区间进行合并
                merged[-1][1] = max(merged[-1][1], interval[1])

        return merged

多谢支持~

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,多谢支持~

打开微信扫一扫,即可进行扫码打赏哦