給定一組區間(可能無序),合併所有重疊區間。
範例:
輸入: [[1,3],[2,6],[8,10],[15,18]]
輸出: [[1,6],[8,10],[15,18]]
start 升序排序。res。res 為空或當前區間 start > res.back().end,無重疊,直接加入。res.back().end = max(res.back().end, cur.end)。class Interval:
def __init__(self, s=0, e=0):
self.start = s
self.end = e
class Solution:
def merge(self, intervals):
if not intervals: return []
intervals.sort(key=lambda x: x.start)
res = [intervals[0]]
for cur in intervals[1:]:
if cur.start <= res[-1].end:
res[-1].end = max(res[-1].end, cur.end)
else:
res.append(cur)
return res