import java.util.*;
/**
* Definition for an interval.
* public class Interval {
* int start;
* int end;
* Interval() { start = 0; end = 0; }
* Interval(int s, int e) { start = s; end = e; }
* }
*/
public class Solution {
public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
//按每个区间第一个数作为排序条件
Collections.sort(intervals, (v1,v2) ->v1.start - v2.start);
ArrayList<Interval> result = new ArrayList<Interval>();
int index = -1;
for(Interval interval :intervals){
if(index == - 1 ||interval.start >result.get(index).end){
//直接添加的条件,如果start大于我区间里的end,说明可以直接放,他两没有交集
// 区间 [a,b] [c,d] c 大于 b的话
//不合并
result.add(interval);
index ++ ;
}else{
//如果 c 大于 b 那么就需要找一个最大的作为 右边的边界 因为数据start都从左到右排好序了
// 更新条件 start 小于已存区间的end
result.get(index).end = Math.max(interval.end, result.get(index).end);
}
}
return result;
}
}