题解 | #合并区间#
合并区间
https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a
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 { ArrayList<Interval> res = new ArrayList<>(); public ArrayList<Interval> merge(ArrayList<Interval> intervals) { if(intervals == null || intervals.size() == 0) return res; if(intervals.size() == 1) return intervals; Collections.sort(intervals, new Comparator<Interval>() { public int compare(Interval o1, Interval o2) { if(o1.start != o2.start) return o1.start - o2.start; else return o1.end - o2.end; } }); res.add(intervals.get(0)); //加入第一个元素 //后面所有元素与res中的最后一个元素进行对比 for(int i = 1 ; i < intervals.size() ; i++){ if(res.get(res.size() - 1).end >= intervals.get(i).start){ res.get(res.size() - 1).end = Math.max(res.get(res.size() - 1).end,intervals.get(i).end); }else{ res.add(intervals.get(i)); } } return res; } }