import java.util.*;
/*
* public class Interval {
* int start;
* int end;
* public Interval(int start, int end) {
* this.start = start;
* this.end = end;
* }
* }
*/
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param intervals Interval类ArrayList
* @return Interval类ArrayList
*/
public ArrayList<Interval> merge (ArrayList<Interval> intervals) {
// write code here
if(intervals.size() == 0)return new ArrayList<Interval>();
// 排个序,保证按start升序排序
Collections.sort(intervals, (Interval a, Interval b) -> a.start - b.start);
// 使用LinkedList
LinkedList<Interval> res = new LinkedList<>();
res.add(intervals.get(0));
for(int i = 1; i < intervals.size(); i++){
if(intervals.get(i).start > res.getLast().end){ // 每次与链表最后一个比较
res.add(intervals.get(i)); // 不重叠
}else{
int pre = res.getLast().end;
int start = res.getLast().start;
int end = Math.max(pre, intervals.get(i).end);
res.removeLast(); // 要把最后一个删掉
res.add(new Interval(start, end)); // 添加合并后的
}
}
return new ArrayList<>(res);
}
}