Facebook PixelInsert Interval — Coding Practice
Insert IntervalMedium

Insert Interval

Medium 14.6k42% acceptance
ArrayIntervals

You are given a list of non-overlapping intervals already sorted by start, where intervals[i] = [startᵢ, endᵢ], and a single newInterval = [start, end].

Insert newInterval into the list so the result stays sorted by start and remains non-overlapping (merge with any intervals it touches or overlaps). Return the updated list.

Two intervals overlap when they share at least one point, so [1,3] and [3,5] merge into [1,5].

Example 1
Input: intervals = [[1,3],[6,9]], newInterval = [2,5]
Output: [[1,5],[6,9]]
[2,5] overlaps [1,3], so they merge into [1,5]; [6,9] is untouched.
Example 2
Input: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
Output: [[1,2],[3,10],[12,16]]
[4,8] overlaps [3,5], [6,7] and [8,10], merging them into [3,10].
Example 3
Input: intervals = [], newInterval = [5,7]
Output: [[5,7]]
Constraints
  • 0 ≤ intervals.length ≤ 10⁴
  • intervals[i].length == 2
  • intervals is sorted by start and non-overlapping
  • 0 ≤ startᵢ ≤ endᵢ ≤ 10⁵
Asked atGoogleAmazonMetaLinkedIn
JavaScript
Loading editor…
Case 1
[[1,3],[6,9]], [2,5]
expected: [[1,5],[6,9]]
Case 2
[[1,2],[3,5],[6,7],[8,10],[12,16]], [4,8]
expected: [[1,2],[3,10],[12,16]]
Case 3
[], [5,7]
expected: [[5,7]]
Case 4
[[1,5]], [2,3]
expected: [[1,5]]
Case 5
[[1,5]], [6,8]
expected: [[1,5],[6,8]]
Case 6
[[3,5],[8,10]], [1,2]
expected: [[1,2],[3,5],[8,10]]
Case 7
[[1,2],[5,6]], [3,4]
expected: [[1,2],[3,4],[5,6]]