Lunski's Clutter

This is a place to put my clutters, no matter you like it or not, welcome here.

0%

57. 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:

1
2
Input: intervals = [[1,3],[6,9]], newInterval = [2,5]
Output: [[1,5],[6,9]]

Example 2:

1
2
3
Input: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
Output: [[1,2],[3,10],[12,16]]
Explanation: Because the new interval [4,8] overlaps with [3,5],[6,7],[8,10].

Example 3:

1
2
Input: intervals = [], newInterval = [5,7]
Output: [[5,7]]

Example 4:

1
2
Input: intervals = [[1,5]], newInterval = [2,3]
Output: [[1,5]]

Example 5:

1
2
Input: intervals = [[1,5]], newInterval = [2,7]
Output: [[1,7]]

先加進去再回到56的方法排序。

1
2
3
4
5
6
7
8
9
10
11
12
# T: O(nlogn), S: O(n)
class Solution:
def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:
intervals.append(newInterval)
intervals.sort(key=lambda x: x[0])
merged = []
for interval in intervals:
if not merged or merged[-1][1] < interval[0]:
merged.append(interval)
else:
merged[-1][1] = max(merged[-1][1], interval[1])
return merged

如果你覺得這篇文章很棒,請你不吝點讚 (゚∀゚)

Welcome to my other publishing channels