描述
给出若干闭合区间,合并所有重叠的部分。
样例
Given intervals => merged intervals:
[ [
(1, 3), (1, 6),
(2, 6), => (8, 10),
(8, 10), (15, 18)
(15, 18) ]
]
挑战
O(n log n) 的时间和 O(1) 的额外空间。
Python:
class Solution:
def merge(self, intervals):
newInter = []
if len(intervals) <= 1:
return intervals
else:
intervals.sort(key = lambda x:x.start)
newInter.append(intervals[0])
for i in range(1,len(intervals)):
prev = newInter[-1]
if intervals[i].start <= prev.end :
prev.end = max(prev.end,intervals[i].end)
else: newInter.append(intervals[i])
return newInter
整体的思路就是,先排序,然后将前一个区间的第二个数与后一个区间的第一个数比较。