LeetCode刷题(26)

来源:互联网 发布:淘宝运营工资提成方案 编辑:程序博客网 时间:2024/06/14 20:26

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 = eclass 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