版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013596119/article/details/82462793
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:
Input: intervals = [[1,3],[6,9]], newInterval = [2,5] Output: [[1,5],[6,9]]
Example 2:
Input: intervals =[[1,2],[3,5],[6,7],[8,10],[12,16]]
, newInterval =[4,8]
Output: [[1,2],[3,10],[12,16]] Explanation: Because the new interval[4,8]
overlaps with[3,5],[6,7],[8,10]
.
Answer:
# Definition for an interval.
# class Interval(object):
# def __init__(self, s=0, e=0):
# self.start = s
# self.end = e
class Solution(object):
def insert(self, intervals, newInterval):
"""
:type intervals: List[Interval]
:type newInterval: Interval
:rtype: List[Interval]
"""
result=[]
l=len(intervals)
if l==0:
return [newInterval]
left=newInterval.start
right=newInterval.end
inserted=False
for i in range(l):
if intervals[i].end<left:
result.append(intervals[i])
if i==l-1 and not inserted:
result.append(Interval(left,right))
continue
elif intervals[i].start>right:
if not inserted:
result.append(Interval(left,right))
result.append(intervals[i])
inserted=True
continue
else:
if intervals[i].end>=left:
left=min(left,intervals[i].start)
if intervals[i].start<=right:
right=max(right,intervals[i].end)
if i==l-1 and not inserted:
result.append(Interval(left,right))
return result