描述:给出一组区间,请合并所有重叠的区间,请保证合并后的区间按区间起点升序排列。
示例1
输入:[[10,30],[20,60],[80,100],[150,180]]
返回值:[[10,60],[80,100],[150,180]]
public class Solution {
public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
ArrayList<Interval> result = new ArrayList<Interval>();
if(intervals==null || intervals.size()<=0){
return result;
}
Collections.sort(intervals, new Comparator<Interval>() {
@Override
public int compare(Interval o1, Interval o2) {
return o1.start-o2.start;
}
});
for(int i=1;i<intervals.size();i++){
if(intervals.get(i).start<=intervals.get(i-1).end){
intervals.get(i).start = intervals.get(i-1).start;
intervals.get(i).end = Math.max(intervals.get(i-1).end, intervals.get(i).end);
}else{
result.add(intervals.get(i-1));
}
}
result.add(intervals.get(intervals.size()-1));
return result;
}
}