Given a collection of intervals, merge all overlapping intervals.
For example,
Given [1,3],[2,6],[8,10],[15,18]
,
return [1,6],[8,10],[15,18]
.
/**
* 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; }
* }
*/
class Solution {
public List<Interval> merge(List<Interval> intervals) {
List<Interval> lst = new ArrayList<>();
if (intervals.size() <= 1){
return intervals;
}
Collections.sort(intervals, new Mycomparator());
lst.add(intervals.get(0));
int size = intervals.size();
for (int i = 1; i < size; ++ i){
Interval top = lst.get(lst.size() - 1);
if (top.end < intervals.get(i).start){
lst.add(intervals.get(i));
}
else {
Interval tmp = new Interval(Math.min(top.start, intervals.get(i).start),
Math.max(top.end, intervals.get(i).end));
lst.remove(lst.size() - 1);
lst.add(tmp);
}
}
return lst;
}
}
class Mycomparator implements Comparator<Interval> {
@Override
public int compare(Interval l0, Interval l1){
return l0.start - l1.start;
}
}