Back to Dashboard
Insert Interval
MediumProblem 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][]);
}
}