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; }