题解 | #合并区间#
合并区间
https://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a
import java.util.*;
/**
* Definition for an interval.
* public class Interval {
* int start;
* int end;
* Interval() { start = 0; end = 0; }
* Interval(int s, int e) { start = s; end = e; }
* }
*/
public class Solution {
ArrayList<Interval> res = new ArrayList<>();
public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
if(intervals == null || intervals.size() == 0) return res;
if(intervals.size() == 1) return intervals;
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;
}
});
res.add(intervals.get(0)); //加入第一个元素
//后面所有元素与res中的最后一个元素进行对比
for(int i = 1 ; i < intervals.size() ; i++){
if(res.get(res.size() - 1).end >= intervals.get(i).start){
res.get(res.size() - 1).end = Math.max(res.get(res.size() - 1).end,intervals.get(i).end);
}else{
res.add(intervals.get(i));
}
}
return res;
}
}

