import java.util.*;
// 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) {
//特殊情况
if (intervals.size() == 1){
return intervals;
}
//先按照开始时间排序
Collections.sort(intervals, new Comparator<Interval>() {
@Override
public int compare(Interval o1, Interval o2) {
return o1.start - o2.start;
}
});
//left为开始时间所处的时间段
//right同一时间段可能的结束时间所处的时间段
int left = 0;
int right = 1;
ArrayList<Interval> ans = new ArrayList<>();
while (right <= intervals.size()){
while (right <= intervals.size() - 1
&& intervals.get(left).end >= intervals.get(right).start){
if (intervals.get(left).end < intervals.get(right).end) {
intervals.get(left).end = intervals.get(right).end;
}
right++;
}
ans.add(intervals.get(left));
left = right;
right++;
}
return ans;
}
}