题解 | #合并区间#
合并区间
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; } Collections.sort(intervals,new Comparator<Interval>(){ public int compare(Interval i1,Interval i2){ if(i1.start!=i2.start){ return i1.start-i2.start; }else{ return i1.end-i2.end; } } }); // write code here //重载比较,按照区间首排序 ArrayList<Interval> res=new ArrayList<>(); for (int i = 0; i < intervals.size(); i++) { //最开始res里面数组为0 int left=intervals.get(i).start; int right=intervals.get(i).end; int size=res.size(); if (size==0||res.get(size-1).end<left) { res.add(intervals.get(i)); } else { Interval temp = new Interval(res.get(size-1).start, Math.max(res.get(size-1).end, right)); res.remove(size-1); res.add(temp); } } return res; } }