题解 | 合并区间
合并区间
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 == null || intervals.size() == 0) {
return new ArrayList<>();
}
// res用于存储list结果
ArrayList<Interval> res = new ArrayList<>();
//通过lamda表达式对 该list升序排序
intervals.sort((a,b)->a.start-b.start);
//tmp用于合并
Interval tmp = intervals.get(0);
for(int i = 1;i<intervals.size();i++){
Interval next = intervals.get(i);//和下一个区间比较
if(tmp.end>=next.start){//如果覆盖了则合并
tmp.end = Math.max(tmp.end,next.end);
}else{//没覆盖 则添加,并且tmp需要改为下一个节点进行后面的操作
res.add(tmp);
tmp = next;
}
}
res.add(tmp);
return res;
}
}