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]
.
题解:利用变量insertPos记录最终区间插入的位置。遍历intervals,那么当前遍历的interval和newInterval有以下几种情况:
代码如下:
1 /** 2 * Definition for an interval. 3 * public class Interval { 4 * int start; 5 * int end; 6 * Interval() { start = 0; end = 0; } 7 * Interval(int s, int e) { start = s; end = e; } 8 * } 9 */ 10 public class Solution { 11 public List<Interval> insert(List<Interval> intervals, Interval newInterval) { 12 List<Interval> answer = new ArrayList<Interval>(); 13 int insertPos = 0; 14 for(Interval in:intervals){ 15 if(newInterval.start > in.end){ 16 answer.add(in); 17 insertPos++; 18 } 19 else if(in.start > newInterval.end) 20 { 21 answer.add(in); 22 } 23 else{ 24 newInterval.start = Math.min(in.start, newInterval.start); 25 newInterval.end = Math.max(in.end, newInterval.end); 26 } 27 } 28 answer.add(insertPos, newInterval); 29 return answer; 30 } 31 }
【leetcode刷题笔记】Insert Interval,布布扣,bubuko.com
原文:http://www.cnblogs.com/sunshineatnoon/p/3868589.html