[LeetCode]题解(python):057-Insert Interval
题目来源
https://leetcode.com/problems/insert-interval/
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).
You may assume that the intervals were initially sorted according to their start times.
Example 1:
Given intervals [1,3],[6,9]
, insert and merge [2,5]
in as [1,5],[6,9]
.
Example 2:
Given [1,2],[3,5],[6,7],[8,10],[12,16]
, insert and merge [4,9]
in as [1,2],[3,10],[12,16]
.
This is because the new interval [4,9]
overlaps with [3,5],[6,7],[8,10]
.
题意分析
Input:a list of intervals and a new interval
Output:insert the new interval into the list and merge if necessary
Conditions:将新的interval插入进去,如果需要合并则合并
题目思路
感觉跟merge interval很像,所以直接append list中,然后排序按照上一题merge的方法,然后过了……
AC代码(Python)
1 # Definition for an interval. 2 # class Interval(object): 3 # def __init__(self, s=0, e=0): 4 # self.start = s 5 # self.end = e 6 7 class Solution(object): 8 def insert(self, intervals, newInterval): 9 """ 10 :type intervals: List[Interval] 11 :type newInterval: Interval 12 :rtype: List[Interval] 13 """ 14 intervals.append(newInterval) 15 intervals.sort(key = lambda x:x.start) 16 17 length = len(intervals) 18 res = [] 19 20 if length == 0: 21 res.append(newInterval) 22 return res 23 24 res.append(intervals[0]) 25 for i in range(1,length): 26 size = len(res) 27 if res[size - 1].start <= intervals[i].start <= res[size - 1].end: 28 res[size - 1].end = max(intervals[i].end, res[size - 1].end) 29 else: 30 res.append(intervals[i]) 31 32 return res 33