Given a collection of intervals, merge all overlapping intervals.
Example 1:
Input: [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
Example 2:
Input: [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.
LeetCode:链接
先将区间按照每个start的值来排序,一定要排序才可以merge。建立一个新列表,因为进行合并的时候要不断进行判断保留新的区间,此时判断是和新列表中的区间判断。
如果判断两个区间是否存在overlap呢?下一个区间的start比上一个区间的end小,就说明肯定是存在overlap的,此时合并。
# Definition for an interval.
# class Interval(object):
# def __init__(self, s=0, e=0):
# self.start = s
# self.end = e
class Solution(object):
def merge(self, intervals):
"""
:type intervals: List[Interval]
:rtype: List[Interval]
"""
intervals.sort(key=lambda x:x.start)
n = len(intervals)
res = []
for i in range(n):
if not res:
res.append(intervals[i])
else:
if intervals[i].start <= res[-1].end:
res[-1].end = max(intervals[i].end, res[-1].end)
else:
res.append(intervals[i])
return res