题解 | #合并区间#
合并区间
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.isEmpty()) { return new ArrayList<>(); // 返回空列表,防止越界 } // 先对原列表进行排序 intervals.sort(Comparator.comparingInt(interval -> interval.start)); // 定义结果区间 ArrayList<Interval> collect = new ArrayList<>(); collect.add(intervals.get(0)); // 初始区间 for (int i = 1; i < intervals.size(); i++ ) { // 输入区间与结果区间最右区间比较 if (intervals.get(i).start > collect.get(collect.size()-1).end) { // 添加新区间 collect.add(intervals.get(i)); } else { // 存在重叠区域,更新最右区间的结束坐标 collect.get(collect.size()-1).end = Math.max(intervals.get(i).end,collect.get(collect.size()-1).end); } } return collect; } }