Insert Interval
Given a setNon-overlappingIntervals, 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:
Given intervals[1,3],[6,9], Insert and merge[2,5]In[1,5],[6,9].
Example 2:
Given[1,2],[3,5],[6,7],[8,10],[12,16], Insert and merge[4,9]In[1,2],[3,10],[12,16].
This is because the new interval[4,9]Overlaps[3,5],[6,7],[8,10].
This is a good question. My algorithms are too scum. paste them directly.
Idea 1: Binary Search insert interval. I didn't implement the specific code. You can directly click here-> Portal
Idea 2: Portal.
In general, there are only three cases. There are four cases of crossover. In fact, let's look at the Code. The Code is better than the diagram...
1 public class Solution { 2 public List<Interval> insert(List<Interval> intervals, Interval newInterval) { 3 List<Interval> res = new ArrayList<Interval>(); 4 for (Interval each : intervals) { 5 if (each.end < newInterval.start) 6 res.add(each); 7 else if (each.start > newInterval.end) { 8 res.add(newInterval); 9 newInterval = each;10 } else {11 newInterval = new Interval(Math.min(each.start, newInterval.start), Math.max(each.end, newInterval.end));12 }13 }14 res.add(newInterval);15 return res;16 }17 }