56-合并区间

56、合并区间

https://leetcode-cn.com/problems/merge-intervals/

题目:

aKT17q.png

题解:

此题思路比较简单,先将所有区间升序排序,排序的依据是每一个区间的左区间元素。

排序过后,直接遍历判断即可,第一个区间直接加入res,之后每次都判断当前的区间左区间元素是否小于上一个区间的右区间元素;

如果是,则判断当前区间的右区间元素是否大于res最后一个区间的右区间元素,如果大于,就说明范围可合并,将res的最后一个区间的右区间元素换成当前区间的右区间元素。

否则,直接将当前区间加入res。

1
2
3
4
5
6
7
8
9
10
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort(key=lambda num:num[0])
res=[]
for list in intervals:
if not res or res[-1][1] < list[0]:
res.append(list)
elif res[-1][1] < list[1]:
res[-1][1] = list[1]
return res

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器