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> list) {
ArrayList<Interval> mergeList = new ArrayList<>();
Collections.sort(list, (a, b) -> a.start - b.start);
int len = list.size();
int i = 0;
while (i < len) {
int left = list.get(i).start;
int right = list.get(i).end;
while (i < len - 1 && list.get(i + 1).start <= right) {
right = Math.max(right, list.get(i + 1).end);
i++;
}
mergeList.add(new Interval(left, right));
i++;
}
return mergeList;
}
}