LC 速查

HOT 100索引 › B5 普通数组 Array

LC 56合并区间Merge Intervals 中等

合并所有相互重叠的区间,返回不重叠的区间列表。

思路 按左端点排序后顺序扫描:当前区间与答案末尾有交则更新其右端点,否则加入新区间。时间 O(n log n)。

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        intervals.sort(key=lambda x: x[0])
        ans = []
        for a, b in intervals:
            if ans and a <= ans[-1][1]:
                ans[-1][1] = max(ans[-1][1], b)
            else:
                ans.append([a, b])
        return ans
← 上一题 最大子数组和轮转数组 下一题 →