Insert interval
不想复用上一题的代码,那么就好好搞清楚位置关系吧!对于给定节点node和带插入节点new:
只有当node.end > new.start时才考虑插入问题,那么此时考虑
new.start
# 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]
"""
if not intervals :
return [newInterval]
elif newInterval.end < intervals[0].start:
return [newInterval] + intervals
elif newInterval.start > intervals[-1].end:
return intervals + [newInterval]
res = []
flag = 0
for node in intervals:
if node.end < newInterval.start or flag == 1:
res += [node]
elif node.start > newInterval.start:
if newInterval.end < node.start:
res += [newInterval, node]
flag = 1
elif newInterval.end <= node.end:
newInterval.end = node.end
res += [newInterval]
flag = 1
else:
continue
else :
if newInterval.end <= node.end:
res += [node]
flag = 1
else:
newInterval.start = node.start
continue
if flag == 0:
res += [newInterval]
return res