# Arrays - Merge overlapping intervals

0 users say they have been asked this quesiton in interview.
Difficulty Level:

### Problem Statement:

Given a collection of intervals, merge all overlapping intervals.

Example:

```  ```Input : [1,3],[2,6],[8,10],[15,18]
Output : [1,6],[8,10],[15,18]
``````

Make sure the returned intervals are sorted.

Solution:
```/**
* 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) {
if(intervals.size() == 0)
return intervals;
if(intervals.size() == 1)
return intervals;

Collections.sort(intervals, new IntervalComparator());

Interval first = intervals.get(0);
int start = first.start;
int end = first.end;

ArrayList<Interval> result = new ArrayList<Interval>();

for(int i = 1; i < intervals.size(); i++){
Interval current = intervals.get(i);
if(current.start <= end){
end = Math.max(current.end, end);
}else{
start = current.start;
end = current.end;
}

}

return result;
}
}

class IntervalComparator implements Comparator{
public int compare(Object o1, Object o2){
Interval i1 = (Interval)o1;
Interval i2 = (Interval)o2;
return i1.start - i2.start;
}
}
```