Merge Intervals

Given a collection of intervals, merge all overlapping intervals.

For example,
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].

 1 public class Solution {
 2     public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
 3         if(intervals.size()==0)
 4             return intervals;
 5             
 6         Comparator<Interval> comparator = new Comparator<Interval>(){
 7             public int compare(Interval a,Interval b){
 8                 return a.start-b.start;
 9                 }   
10         };
11         
12         Collections.sort(intervals,new sotr());
13         ArrayList<Interval> result = new ArrayList<Interval> ();
14         Interval temp = intervals.get(0);
15         for(int i=1;i<intervals.size();i++){
16             Interval cur = intervals.get(i);
17             if(temp.end<cur.start){
18                 result.add(temp);
19                 temp = cur;
20             }
21             else if(temp.end>=cur.start){
22                 int left =Math.min(temp.start,cur.start);
23                 int right = Math.max(temp.end,cur.end);
24                 temp = new Interval(left,right);
25             }
26         }
27         result.add(temp);
28         return result;
29     }
30 }
View Code

 

posted @ 2014-02-06 14:28  krunning  阅读(141)  评论(0编辑  收藏  举报