插入区间

给出一个无重叠的按照区间起始端点排序的区间列表。

在列表中插入一个新的区间,你要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。

样例

插入区间[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 }
原文地址:https://www.cnblogs.com/wangnanabuaa/p/5024795.html