关键点:对左区间先进行排序,然后依次将每个区间加入res中
使用list.sort()的key以及匿名函数lambda
python3匿名函数:
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort(key = lambda x: x[0])
res = []
for interval in intervals:
if not res or res[-1][1] < interval[0]:
res.append(interval)
else:
res[-1][1] = max(res[-1][1], interval[1])
return res
'''
#我的笨方法
def listsort(nums):
n = len(nums)
for i in range(n-1):
for j in range(n-1-i):
if nums[j][0] > nums[j+1][0]:
nums[j], nums[j+1] = nums[j+1], nums[j]
return nums
intervals = listsort(intervals)
#print(intervals)
i = 0
res = []
while i < len(intervals):
j = i + 1
rightmax = intervals[i][1]
while j < len(intervals) and intervals[j][0] <= rightmax:
rightmax = max(intervals[j][1], rightmax)
j += 1
res.append([intervals[i][0], rightmax])
i = j
#if i == len(intervals)-1: res.append(intervals[-1])
return res
'''