中等难度题,直接上代码了
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 {
public ArrayList<Interval> merge(ArrayList<Interval> intervals) {
ArrayList<Interval> output = new ArrayList<>();
int size = intervals.size();
if(size == 0 || size == 1){
return intervals;
}
intervals.sort((o1,o2) -> o1.start - o2.start);
int preBegin = intervals.get(0).start;
int preEnd = intervals.get(0).end;
for(int i = 1; i < size; i++){
Interval curr = intervals.get(i);
if(curr.start <= preEnd){
preBegin = Math.min(preBegin, curr.start);
preEnd = Math.max(preEnd, curr.end);
}else{
output.add(new Interval(preBegin,preEnd));
preBegin = curr.start;
preEnd = curr.end;
}
}
output.add(new Interval(preBegin,preEnd));
return output;
}
}