题解 | #合并区间#
合并区间
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;
}
}
查看21道真题和解析