题解 | #合并区间#
合并区间
http://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; }
* }
*/
class MyComparator implements Comparator<Interval> {
@Override
public int compare(Interval o1, Interval o2) {
return Integer.compare(o1.end, o2.end);
}
}
public class Solution {
public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
if (intervals.size() <= 1) {
return intervals;
}
Comparator cmp = new MyComparator();
Interval[] objs = intervals.toArray(new Interval[0]);
Arrays.sort(objs, cmp);
ArrayList<Interval> result = new ArrayList<>();
Interval obj = objs[objs.length-1];
for(int i = objs.length-2; i >= 0; i--) {
if (obj.start <= objs[i].end) {
if (obj.start > objs[i].start) {
obj.start = objs[i].start;
}
} else {
result.add(obj);
obj = objs[i];
}
if (i == 0) {
result.add(obj);
}
}
Collections.reverse(result);
return result;
}
}