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