1.题目详情
给出一个区间的集合,请合并所有重叠的区间。
2.解题思路
自己没啥好想法,看了题解和代码才慢慢想通。
思路
先按首位置进行排序;
接下来,如何判断两个区间是否重叠呢?比如 a = [1,4],b = [2,3]
当 a[1] >= b[0] 说明两个区间有重叠.
但是如何把这个区间找出来呢?
左边位置一定是确定,就是 a[0],而右边位置是 max(a[1], b[1])
所以,我们就能找出整个区间为:[1,4]
3.代码实现
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
if not intervals: return []
intervals.sort() #先排序
res = [intervals[0]]
for x, y in intervals[1:]:
if res[-1][1] < x:
res.append([x, y])
else:
res[-1][1] = max(y, res[-1][1])
return res