All problems
0361MediumArray

Slot a New Rehearsal Block

Tracked in this browser only
Write code

Trains the technique from

LeetCode 57Insert Interval

This is an original problem, written from a brief that listed the technique, the difficulty, the topics, the function shape and the input bounds — none of that problem's wording, examples, hints or editorials. The link is there so you can map your practice onto the standard set.

Same function shape, different story and different numbers.

A rehearsal room stores its booked blocks in intervals. Each block is a pair [from, to] giving the minute the block opens and the minute it closes. The blocks are listed from earliest opening to latest, and no two of them share even a single minute, not even an endpoint.

A fresh request arrives as newInterval, another [from, to] pair. Put it on the schedule. Every booked block the request runs into fuses with it into one longer block, and blocks that merely meet the request at an endpoint count as running into it.

Return the schedule after the request has been placed: a list of blocks ordered by opening minute, with no two blocks overlapping or meeting.

Examples

Example 1

Input
intervals = [[1,3],[6,9],[12,14]], newInterval = [2,7]
Output
[[1, 9], [12, 14]]

The request covers minutes 2 through 7, so it runs into [1,3] and into [6,9]; those two and the request fuse into [1,9]. The block [12,14] is left alone.

Example 2

Input
intervals = [[5,8]], newInterval = [2,5]
Output
[[2, 8]]

The request closes on the same minute the booked block opens, and meeting at an endpoint counts, so the two fuse into [2,8].

Example 3

Input
intervals = [], newInterval = [4,9]
Output
[[4, 9]]

Nothing is booked, so the schedule is the request on its own.

Example 4

Input
intervals = [[1,3],[5,6],[8,10],[14,16]], newInterval = [4,9]
Output
[[1, 3], [4, 10], [14, 16]]

The request runs into [5,6] and [8,10], and the three fuse into [4,10]. It opens at minute 4 while [1,3] closes at minute 3, so those two neither overlap nor meet, and [14,16] is untouched.

Constraints

  • 0 <= intervals.length <= 10^4
  • intervals[i].length == 2
  • 0 <= intervals[i][0] <= intervals[i][1] <= 10^5
  • intervals is ordered by opening minute, and no two blocks overlap or meet.
  • newInterval.length == 2
  • 0 <= newInterval[0] <= newInterval[1] <= 10^5

The signature

The editor is preloaded with this. It matches the parent problem's shape, so a solution that works here transfers to a judge unchanged.

Python
def insert(intervals: list[list[int]], newInterval: list[int]) -> list[list[int]]:
Java
public int[][] insert(int[][] intervals, int[] newInterval)
September 7
Apply