public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
//1. 按照区间左节点排序
Collections.sort(intervals, new Comparator<Interval>(){
public int compare(Interval list1, Interval list2){
return list1.start - list2.start;
}
});
//2. 维护结果
ArrayList<Interval> res = new ArrayList();
int index = -1;
//3. 遍历有序的原始区间
for(Interval member : intervals){
//4. 当结果集为空,或者新的元素与结果集中的区间没有重合,直接添加
if(index == -1 || member.start > res.get(index).end){
res.add(member);
index++;
}else{
//5. 有重合则修改结果集中的区间右端点,取新元素和结果集中较大者
res.get(index).end = Math.max(member.end, res.get(index).end);
}
}
return res;
}