Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).
You may assume that the intervals were initially sorted according to their start times.
Example 1:
Given intervals [1,3],[6,9]
, insert and merge [2,5]
in
as [1,5],[6,9]
.
Example 2:
Given [1,2],[3,5],[6,7],[8,10],[12,16]
, insert and merge [4,9]
in
as [1,2],[3,10],[12,16]
.
This is because the new interval [4,9]
overlaps with [3,5],[6,7],[8,10]
.
把一个区间合并到一个连续不重叠的区间集合里,和Merge Interval类似~
把和新的区间有重叠的区间合并为一个大区间即可,其它区间不变。
# Definition for an interval.
# class Interval:
# def __init__(self, s=0, e=0):
# self.start = s
# self.end = e
class Solution:
# @param intervals, a list of Intervals
# @param newInterval, a Interval
# @return a list of Interval
def insert(self, intervals, newInterval):
if intervals is None or len(intervals) == 0:
return [newInterval]
res = []; inserted = False
for curr in intervals:
if newInterval.start > curr.end:
res.append(curr)
elif curr.start > newInterval.end:
if not inserted:
inserted = True
res.append(newInterval)
res.append(curr)
else:
newInterval.start = min(curr.start, newInterval.start)
newInterval.end = max(curr.end, newInterval.end)
#remember to add the following procedure
if len(res) == 0 or newInterval.start > res[-1].end:
res.append(newInterval)
return res