题解 | 合并区间
合并区间
https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a
class Solution:
def merge(self , intervals: List[Interval]) -> List[Interval]:
# write code here
res=[]
intervals.sort(key=lambda x:x.start)
for i in range(len(intervals)):
if not res or intervals[i].start>res[-1].end:
res.append(intervals[i])
else:
res[-1].end=max(intervals[i].end,res[-1].end)
return res
思路:
- 将列表按开始位置排序
- 新建结果列表。
- 遍历原列表中的区间。如果区间的开头小于等于结果列表最新区间的结尾,说明两者是包含关系,需要合并。合并就是取两个区间的结尾最大值作为新结尾。(画图更清晰)
- 否则说明当前列表不需要合并,直接添加到结果列表中。
