FastPrepInsert Interval

Insert Interval

Amazon logoAmazon● MediumFULLTIMEONSITE INTERVIEW
Learn

Problem statement

You are given a list of non-overlapping closed intervals intervals, sorted by start time, and one closed interval newInterval.

Insert newInterval so that the result remains sorted and contains no overlapping intervals. Merge every interval that overlaps the inserted interval, and return the resulting list.

Function

insertInterval(intervals: int[][], newInterval: int[]) → int[][]

Examples

Example 1

intervals = [[1,3],[6,9]]newInterval = [2,5]return = [[1,5],[6,9]]

The new interval overlaps [1,3], so they merge into [1,5]. The interval [6,9] remains separate.

Example 2

intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]]newInterval = [4,8]return = [[1,2],[3,10],[12,16]]

The new interval overlaps [3,5], [6,7], and [8,10], producing the merged interval [3,10].

Example 3

intervals = []newInterval = [5,7]return = [[5,7]]

With no existing intervals, the inserted interval is the entire result.

Constraints

  • 0 <= intervals.length <= 10000
  • Each interval has exactly two integers [start, end] with start <= end.
  • intervals is sorted by start time and contains no overlapping intervals.
  • newInterval has exactly two integers with newInterval[0] <= newInterval[1].
  • Every endpoint is in [-10^9, 10^9].
  • Intervals are closed, so intervals sharing an endpoint overlap.

More Amazon problems

See Amazon hiring insights
public int[][] insertInterval(int[][] intervals, int[] newInterval) {
    // Write your code here.
}
intervals[[1,3],[6,9]]
newInterval[2,5]
expected[[1,5],[6,9]]
Checking account…