[LC] 57. Insert Interval
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).
You may assume that the intervals were initially sorted according to their start times.
Example 1:
Input: intervals = [[1,3],[6,9]], newInterval = [2,5] Output: [[1,5],[6,9]]
Example 2:
Input: intervals =[[1,2],[3,5],[6,7],[8,10],[12,16]]
, newInterval =[4,8]
Output: [[1,2],[3,10],[12,16]] Explanation: Because the new interval[4,8]
overlaps with[3,5],[6,7],[8,10]
.
class Solution { public int[][] insert(int[][] intervals, int[] newInterval) { List<int[]> list = new ArrayList<>(); int i = 0; while (i < intervals.length && intervals[i][1] < newInterval[0]) { list.add(intervals[i]); i += 1; } int start = newInterval[0], end = newInterval[1]; // should be start <= newInterval end while(i < intervals.length && intervals[i][0] <= newInterval[1]) { start = Math.min(start, intervals[i][0]); end = Math.max(end, intervals[i][1]); i += 1; } list.add(new int[]{start, end}); while (i < intervals.length) { list.add(intervals[i]); i += 1; } int[][] res = new int[list.size()][2]; for (int j = 0; j < list.size(); j++) { res[j] = list.get(j); } return res; } }