题解 | #合并区间#
合并区间
http://www.nowcoder.com/practice/69f4e5b7ad284a478777cb2a17fb5e6a
/**
* 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 {
public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
Collections.sort(intervals, (v1,v2) ->v1.start - v2.start);
ArrayList<Interval> result = new ArrayList<Interval>();
int index = -1;
for(Interval interval :intervals){
if(index == - 1 ||interval.start >result.get(index).end){
// 区间 [a,b] [c,d] c 大于 b的话
//不合并
result.add(interval);
index ++ ;
}else{
//如果 c 大于 b 那么就需要找一个最大的作为 右边的边界 因为数据start都从左到右排好序了
result.get(index).end = Math.max(interval.end, result.get(index).end);
}
}
return result;
}
}