示例 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