Insert Interval
Medium
Subject: Intervals
Time Complexity
O(N)
Space Complexity
O(N)
Problem Description
You are given an array of non-overlapping intervals sorted by start time, and a new interval. Insert the new interval into the array, merging if necessary.
Optimal Solution
Pythondef insert(intervals, newInterval):
res = []
i, n = 0, len(intervals)
# add all intervals ending before newInterval starts
while i < n and intervals[i][1] < newInterval[0]:
res.append(intervals[i])
i += 1
# merge overlapping intervals
while i < n and intervals[i][0] <= newInterval[1]:
newInterval[0] = min(newInterval[0], intervals[i][0])
newInterval[1] = max(newInterval[1], intervals[i][1])
i += 1
res.append(newInterval)
# add remaining
while i < n:
res.append(intervals[i])
i += 1
return res