题解 | #合并区间#
合并区间
https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a
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) { if (intervals.size() <= 1) { return intervals; } ArrayList<Interval> res = new ArrayList<>(); int n = intervals.size(); // 进行排序 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; } } }); Interval a = intervals.get(0); int left = a.start, right = a.end; for (int i = 1; i < n; i++) { Interval arr = intervals.get(i); // 有重叠部分 if (right >= arr.start) { if (right < arr.end) { right = arr.end; } } else { res.add(new Interval(left, right)); left = arr.start; right = arr.end; } } // 最后这一步一定要加上 res.add(new Interval(left, right)); return res; } }