# Definition for an interval.# class Interval:# def __init__(self, s=0, e=0):# self.start = s# self.end = eclassSolution:defmerge(self, intervals):"""
:type intervals: List[Interval]
:rtype: List[Interval]
"""#先对所有区间的第1个元素进行排序
n = len(intervals)
if n<2:
return intervals
sort_list = self.quick_sort_list(intervals)
start = sort_list[0].start
end = sort_list[0].end
res = []
for i in range(1,n):
if end<sort_list[i].start:
res.append([start,end])
start = sort_list[i].start
end = sort_list[i].end
if i+1==n:
res.append([start,end])
elif end>=sort_list[i].start:
if end<sort_list[i].end:
end = sort_list[i].end
if i+1<n:
if end<sort_list[i+1].start:
res.append([start,end])
start = sort_list[i+1].start
end = sort_list[i+1].end
else:
res.append([start,end])
return res
defquick_sort_list(self,intervals):
less = []
more = []
pivotlist = []
if len(intervals)<=1:
return intervals
else:
pivot = intervals[0]
for i in range(len(intervals)):
item_list = intervals[i]
if item_list.start<pivot.start:
less.append(item_list)
elif item_list.start>pivot.start:
more.append(item_list)
else:
if item_list.end<pivot.end:
less.append(item_list)
elif item_list.end>pivot.end:
more.append(item_list)
else:
pivotlist.append(pivot)
less = self.quick_sort_list(less)
more = self.quick_sort_list(more)
return less + pivotlist + more