描述
给出若干闭合区间,合并所有重叠的部分。
思路:先按照start排序,然后根据情况进行合并。
实现:
/**
* Definition of Interval:
* public classs Interval {
* int start, end;
* Interval(int start, int end) {
* this.start = start;
* this.end = end;
* }
* }
*/
public class Solution {
public List<Interval> merge(List<Interval> intervals) {
List<Interval> list=new ArrayList<Interval>();
if(intervals==null || intervals.size()==0) return list;
if(intervals.size()<2) return intervals;
Collections.sort(intervals, new Comparator<Interval>(){
public int compare(Interval o1, Interval o2) {
if(o1.start==o2.start) return 0;
else{
if(o1.start>o2.start) return 1;
else return -1;
}
}});
int i=0;
Interval res=intervals.get(i);
i++;
while(i<intervals.size()){
Interval tep=intervals.get(i);
if(tep.start>res.end){
list.add(res);
res=tep;
}
else{
if(tep.end>res.end){
res.end=tep.end;
}
}
i++;
}
list.add(res);
return list;
}
}