对左边界排序,如果下一个区间的左边界在前一个的有边界内,考虑是否要更新边界,如果如果下一个区间的左边界在前一个的有边界外,说明区间无法合并,开始计算下一个区间
public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
ArrayList<Interval> res = new ArrayList<>();
Collections.sort(intervals,(a,b)->a.start-b.start);
int len = intervals.size();
int i = 0;
while (i < len) {
int left = intervals.get(i).start;
int right = intervals.get(i).end;
while (i < len-1 && intervals.get(i+1).start <= right) {
right = Math.max(right,intervals.get(i+1).end);
i++;
}
res.add(new Interval(left,right));
i++;
}
return res;
}
京公网安备 11010502036488号