先对各个区间的起点进行排序,再逐个判断相邻区间的A.终点和B.起点是否有交叉进行合并
# 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]:
# 对区间起点进行排序
intervals.sort(key=(lambda x:x.start))
res = []
for i in range(len(intervals)):
# 第一个元素直接加入
if not res:
res.append(intervals[i])
else:
# 判断区间是否有交叉,若有,进行合并;若没有,直接加入
if res[-1].end >= intervals[i].start:
res[-1].end = max(res[-1].end, intervals[i].end)
else:
res.append(intervals[i])
return res