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 }
原文:http://www.cnblogs.com/krunning/p/3538760.html