Insert Intveral
Merge Intervals
Problem
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.
Thought Process

Solution
class Solution:
def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:
res = []
i, start, end = 0,0,1
#finding interval where interval[i].end >= newInterval[start]
while i < len(intervals) and newInterval[start] > intervals[i][end]:
res.append(intervals[i])
i+=1
#if interval[start] is less than newInterval[end] this means we can merge
#We borrowing "intervals[i][start] <= newInterval[end]" from Merge Interval
while i < len(intervals) and intervals[i][start] <= newInterval[end]:
newInterval[start] = min(newInterval[start], intervals[i][start])
newInterval[end] = max(newInterval[end], intervals[i][end])
i+=1
res.append(newInterval)
while i < len(intervals): #place the rest of the intervals
res.append(intervals[i])
i+=1
return res
#Time: O(n)
#Space: O(n)
Last updated
Was this helpful?