题目描述
给出一组区间,请合并所有重叠的区间。
请保证合并后的区间按区间起点升序排列。
数据范围:区间组数 0≤n≤2×105,区间内 的值都满足0≤val≤2×105
要求:空间复杂度 O(n),时间复杂度 O(nlogn)
进阶:空间复杂度 O(val),时间复杂度O(val)
code
class Interval:
def __init__(self, a=0, b=0):
self.start = a
self.end = b
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param intervals Interval类一维数组
# @return Interval类一维数组
#
class Solution:
def merge(self , intervals: List[Interval]) -> List[Interval]:
# write code here
intervals.sort(key=(lambda x:x.start))
res=[]
n=len(intervals)
for i in range(n):
if res==[]:
res.append(intervals[i])
else:
if res[-1].end >= intervals[i].start:
res[-1].end = max(intervals[i].end,res[-1].end)
else:
res.append(intervals[i])
return res