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].
/**
* Definition for an interval.
* public class Interval {
* int start;
* int end;
* Interval() { start = 0; end = 0; }
* Interval(int s, int e) { start = s; end = e; }
* }
*/
首先要实现intervals按照start排序,后一个start小于前一个end则合并。
public class Solution {
public List<Interval> merge(List<Interval> intervals) {
if(intervals==null||intervals.size()<=1)
return intervals;
ArrayList<Interval> at=new ArrayList<Interval>();
Collections.sort(intervals,new implementComparator());
Interval pre=intervals.get(0);
for(int i=1;i<intervals.size();i++){
Interval cur=intervals.get(i);
if(cur.start<=pre.end)
pre.end=Math.max(cur.end,pre.end);
else{
at.add(pre);
pre=cur;
}
}
at.add(pre);
return at;
}
}
//实现Comparator接口,其中必须有compare方法
class implementComparator implements Comparator<Interval>{
public int compare(Interval t1,Interval t2){
return t1.start-t2.start;
}
}