题解 | #合并区间#
合并区间
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) { intervals.sort((o1, o2) -> o1.start - o2.start); ArrayList<Interval> mergedList = new ArrayList<>(); Interval interval1 = intervals.get(0); Interval interval2 = new Interval(0, 0); for(int i = 0; i < intervals.size(); i++){ interval2 = intervals.get(i + 1); if(interval1.end > interval2.start){ if(interval1.end < interval2.end){ //merge interval1.end = interval2.end; }else{ //全包子集 如 [10, 30], [20, 25] continue; } if(i == intervals.size() - 2){ mergedList.add(interval1); break; } } else if(interval1.end < interval2.start){ //无交集 如 [10,30][40,50] mergedList.add(interval1); interval1 = interval2; if(i == intervals.size() - 2){ mergedList.add(interval2); break; } } } return mergedList; } }