NC37 合并区间
作者:互联网
描述
给出一组区间,请合并所有重叠的区间。
请保证合并后的区间按区间起点升序排列。
数据范围:区间组数0≤n≤2×105
,区间内 的值都满足 0 ≤val≤2×105
要求:空间复杂度 O(n),时间复杂度 O(nlogn)
进阶:空间复杂度 O(val),时间复杂度O(val)
解题思路和代码
from functools import cmp_to_key 使用该方法来设置多个字段的排序
class Solution:
def merge(self , intervals: List[Interval]) -> List[Interval]:
res = list()
#去除特殊情况
if len(intervals) == 0:
return res
#按照区间首排序
intervals.sort(key=cmp_to_key(lambda a,b:a.start - b.start))
#放入第一个区间
res.append(intervals[0])
#遍历后续区间,查看是否与末尾有重叠
for i in range(len(intervals)):
#区间有重叠,更新结尾
if intervals[i].start <= res[-1].end:
res[-1].end = max(res[-1].end, intervals[i].end)
#区间没有重叠,直接加入
else:
res.append(intervals[i])
return res
标签:val,res,复杂度,NC37,合并,start,intervals,区间 来源: https://www.cnblogs.com/yzysimpletest/p/16367391.html