以数组
intervals表示若干个区间的集合,其中单个区间为intervals[i] = [starti, endi]。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。
因为需要合并所有重叠的区间,所以排序后可以让重叠的区间放到一起。当前区间的左边界小于等于前一个区间的右边界时存在重叠,所以进行合并,这里合并是最好取一下左边界。
python
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort()
res = []
for interval in intervals:
if not res:
res.append(interval)
else:
last = res[-1]
if interval[0] <= last[1]:
# 当前区间的左 <= 最后区间的右 → 重叠,要合并
res[-1] = [min(last[0], interval[0]), max(interval[1], last[1])]
else:
res.append(interval)
return res