题目: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)