標籤:style blog http color os strong io width
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:
Given intervals [1,3],[6,9], insert and merge [2,5] in as [1,5],[6,9].
Example 2:
Given [1,2],[3,5],[6,7],[8,10],[12,16], insert and merge [4,9] in as [1,2],[3,10],[12,16].
This is because the new interval [4,9] overlaps with [3,5],[6,7],[8,10].
這道題是個好題。我的演算法太渣了,直接貼人家的吧。
思路1 : 二分尋找插入區間,具體代碼我沒實現,大家直接戳這裡->傳送門
思路2 : 傳送門。
一般來說,只有這三種情況,交叉有著四種情況,其實大家還是看代碼吧,代碼比圖還好看。。。
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 }