标签:
给出一个无重叠的按照区间起始端点排序的区间列表。
在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。
样例
插入区间[2, 5] 到 [[1,2], [5,9]],我们得到 [[1,9]]。
插入区间[3, 4] 到 [[1,2], [5,9]],我们得到 [[1,2], [3,4], [5,9]]。
1 /** 2 * Definition of Interval: 3 * public classs Interval { 4 * int start, end; 5 * Interval(int start, int end) { 6 * this.start = start; 7 * this.end = end; 8 * } 9 */ 10 11 class Solution { 12 /** 13 * Insert newInterval into intervals. 14 * @param intervals: Sorted interval list. 15 * @param newInterval: A new interval. 16 * @return: A new sorted interval list. 17 */ 18 public ArrayList<Interval> insert(ArrayList<Interval> intervals, Interval newInterval) { 19 // write your code here 20 if(intervals == null || newInterval == null ){ 21 return intervals; 22 } 23 if(intervals.size()==0){ 24 intervals.add(newInterval); 25 return intervals; 26 } 27 ListIterator<Interval> it = intervals.listIterator(); 28 while(it.hasNext()){ 29 Interval temInterval = it.next(); 30 if(newInterval.end < temInterval.start){ 31 it.previous(); 32 it.add(newInterval); 33 return intervals; 34 }else{ 35 if(temInterval.end<newInterval.start){ 36 continue; 37 }else{ 38 newInterval.start = Math.min(temInterval.start,newInterval.start); 39 newInterval.end = Math.max(temInterval.end,newInterval.end); 40 it.remove(); 41 } 42 } 43 } 44 intervals.add(newInterval); 45 return intervals; 46 } 47 }
标签:
原文地址:http://www.cnblogs.com/wangnanabuaa/p/5024795.html