57. &56 Insert Interval

2018-03-14  本文已影响0人  Jonddy
题目要求:
# Time:  O(n)
# Space: O(1)


class Interval(object):
    def __init__(self, s=0, t=0):
        self.start = s
        self.end = t

    def __repr__(self):
        return "[{}, {}]".format(self.start, self.end)


class Solution(object):
    def insert(self, intervals, newInterval):
        """
        :param intervals: List[Interval]
        :param nreinterval: Interval
        :return: List[Interval]
        """
        result = []
        i = 0
        while i < len(intervals) and newInterval.start > intervals[i].end:  #找到需要插入更新的位置
            result.append(intervals[i])
            i += 1
        while i < len(intervals) and newInterval.end >= intervals[i].start:   #从上面的位置开始
            newInterval = Interval(min(newInterval.start, intervals[i].start), \
                                   max(newInterval.end, intervals[i].end))
            i += 1
        result.append(newInterval)
        for interval in range(i, len(intervals)):
            result.append(intervals[interval])
        return result

if __name__ == "__main__":
    print(Solution().insert([Interval(1, 2), Interval(3, 5), Interval(6, 7), Interval(8, 10), Interval(12, 16)], Interval(4, 9)))


上一篇 下一篇

猜你喜欢

热点阅读