Given a collection of intervals, merge all overlapping intervals.
Example 1:
Input: [[1,3],[2,6],[8,10],[15,18]] Output: [[1,6],[8,10],[15,18]] Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
Example 2:
Input: [[1,4],[4,5]] Output: [[1,5]] Explanation: Intervals [1,4] and [4,5] are considerred overlapping.
public List<Interval> merge(List<Interval> intervals) {
if (intervals.size() <= 1) return intervals;
List<Interval> result = new ArrayList<>();
Collections.sort(intervals, Comparator.comparingInt(o -> o.start));
for (int i = 1; i < intervals.size(); i++) {
Interval left = intervals.get(i-1);
Interval right = intervals.get(i);
if (left.end < right.start) {
result.add(left);
} else {
right.start = left.start;
right.end = Math.max(left.end, right.end);
}
if (i == intervals.size()-1) result.add(right);
}
return result;
}