class Solution {
public int[][] merge(int[][] intervals) {
List<Interval> res = new LinkedList<Interval>();
if(intervals == null) return res;
int[] start = new int[intervals.size()];
int[] end = new int[intervals.size()];
for(int i = 0; i < intervals.size; i++){
start[i] = intervals.get(i).start;//.start为第一个元素
end[i] = intervals.get(i).end;//.end为最后一个元素
}
Arrays.sort(start);
Arrays.sort(end);
int i = 0;
while(i < intervals.size()){
int st = start[i];
while(i < intervals.size() - 1 && start[i + 1] <= end[i]) i++;//两区间重合i++,前一个end和后一个start比较
//若两区间不重合
int en =end[i];
Interval in = new Interval(st, en);
res.add(in);
i++;
}
return res;
}
}
归纳:取出区间的起始和终止值,排序,再比较当前idx的end值和下一个idx的start值,看是否重合,如果重合,idx++