Back to Dashboard

Insert Interval

Medium

Problem Statement

Given a list of non-overlapping intervals sorted by their start time, insert a given interval at the correct position and merge all necessary intervals to produce a list that has only mutually exclusive intervals.

Examples

Example 1:

  • Input: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
  • Output: [[1,2],[3,8],[12,16]]

Approach 1 Merge Intervals:

 class Solution {
    public int[][] insert(int[][] intervals, int[] newInterval) {
        var mergedIntervals = new ArrayList<int[]>();
        int i = 0;
        for (;i < intervals.length && intervals[i][1] < newInterval[0]; i ++) {
            mergedIntervals.add(new int[]{intervals[i][0], intervals[i][1]});
        }
        while (i < intervals.length && intervals[i][0] <= newInterval[1]) {
            newInterval[0] = Math.min(intervals[i][0], newInterval[0]);
            newInterval[1] = Math.max(intervals[i][1], newInterval[1]);
            i ++;
        }
        mergedIntervals.add(new int[]{newInterval[0], newInterval[1]});
        while (i < intervals.length) {
            mergedIntervals.add(new int[]{intervals[i][0], intervals[i][1]});
            i ++;
        }
        return mergedIntervals.toArray(new int[0][]);
    }
}

Status

Solved

Complexity

Time
O(n)
Space
O(1)

Tags

ArrayMerge Intervals

Date

2026-02-23
View Problem Source