题目:
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; }
* }
*/
public class Solution {
public List<Interval> merge(List<Interval> intervals) {
List<Interval> ret= new ArrayList<Interval>();
intervals.sort((x,y)->{return x.start -y.start;});
Interval a =null;
for(int i=0;i<intervals.size();i++){
if(null==a)
a=intervals.get(i);
else{
Interval temp = intervals.get(i);
if(temp.start>a.end){
ret.add(a);
a=temp;
}else if(temp.end<a.end){
continue;
}else if(temp.end>=a.end){
Interval mergeRet = new Interval(a.start,temp.end);
a=mergeRet;
}
}
}
if(a!=null) ret.add(a);
return ret;
}
}
参考: