问题描述:
给出一个区间的集合,请合并所有重叠的区间。
示例 :
输入: [[1,4],[0,4]]
输出: [[0,4]]
问题分析:
(1)按照每个小区的第一个关键字,进行从小到大排序。
(2)重新收集intervals
列表里面的每个小区间,并考虑重叠合并问题。
Python3实现:
# @Time :2018/11/21
# @Author :LiuYinxing
# Definition for an interval.
class Interval:
def __init__(self, s=0, e=0):
self.start = s
self.end = e
class Solution:
def merge(self, intervals):
"""
:type intervals: List[Interval]
:rtype: List[Interval]
"""
if len(intervals) <= 1: return intervals
intervals.sort(key=lambda x: x.start) # 按照第一个关键字,从小到大排序
res = [intervals[0]] # 定义结果列表,并把第一个元素放进去
for i, e in enumerate(intervals, start=1): # 依次添加新元素,并考虑重叠问题
if e.start <= res[-1].end:
res[-1].end = max(res[-1].end, e.end) # 合并
else:
res.append(e)
return res
if __name__ == '__main__':
solu = Solution()
intervals = [Interval(1, 4), Interval(0, 4)]
print([[e.start, e.end] for e in solu.merge(intervals)])
声明: 总结学习,有问题或不妥之处,可以批评指正哦。