leetcode.array--57. Insert Interval

题目:57. Insert Interval

题目链接:https://leetcode.com/problems/insert-interval/description/

这个题呀跟上一个差不多,题目给定了若干个区间,这些区间已经按照start升序排序,要求呢将给出的新区间插进去,返回新区间插入合并的结果。

因为已经排好序了嘛,应该是分情况讨论+遍历吧。但是我把上个题的代码复制过来了,没有重新写

Python:

# Definition for an interval.
# class Interval(object):
#     def __init__(self, s=0, e=0):
#         self.start = s
#         self.end = e
from operator import attrgetter
class Solution(object):
    def insert(self, intervals, newInterval):
        """
        :type intervals: List[Interval]
        :type newInterval: Interval
        :rtype: List[Interval]
        """
        def merge(intervals):
            length = len(intervals)
            if length == 0:
                return []
            if length < 2:
                return [intervals[0]]
            intervals.sort(key=attrgetter("start"))
            res = []
            res.append(intervals[0])
            rear = 0
            for i in range(1, length):
                if intervals[i].start <= res[rear].end:
                    if intervals[i].end > res[rear].end:
                        res[rear].end = intervals[i].end
                else:
                    res.append(intervals[i])
                    rear += 1
            return res
        intervals.append(newInterval)
        return merge(intervals)


你可能感兴趣的:(leetcode,leetcode,array)