Given a collection of intervals, merge all overlapping intervals.
For example,
Given [1,3],[2,6],[8,10],[15,18]
,
return [1,6],[8,10],[15,18]
.
<span style="font-size:18px;">/**
* 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) {
Interval pre, next;
int i = 0;
Object[] objects = intervals.toArray();
Arrays.sort(objects, new Comparator(){
public int compare(Object o1, Object o2){
Interval i1 = (Interval)o1;
Interval i2 = (Interval)o2;
return i1.start - i2.start;
}
});
ArrayList<Interval> l = new ArrayList<>();
for(Object o : objects){
l.add((Interval)(o));
}
while(i + 1 < l.size()){
pre = l.get(i);
next = l.get(i + 1);
if(next.start <= pre.end){
pre.end = Math.max(pre.end, next.end);
l.remove(i + 1);
}else{
++i;
}
}
return l;
}
}</span>