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]
.
package leetCode; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; /** * Created by lxw, liwei4939@126.com on 2018/3/9. */ class Interval { int start; int end; Interval() { start = 0; end = 0; } Interval(int s, int e) { start = s; end = e; } public String toString(){ return "[" + start + "," + end + "]"; } } public class L056_Merge_Intervals { public List<Interval> merge(List<Interval> intervals){ List<Interval> res = new ArrayList<>(); if (intervals == null || intervals.size() < 1){ return res; } Collections.sort(intervals, new Comparator<Interval>() { @Override public int compare(Interval o1, Interval o2) { return o1.start - o2.start; } }); Interval prev = null; for (Interval item : intervals){ if (prev == null || prev.end < item.start){ res.add(item); prev = item; } else if (prev.end < item.end){ prev.end = item.end; } } return res; } public static void main(String[] args){ List<Interval> list = new ArrayList<>(); list.add(new Interval(1, 3)); list.add(new Interval(2, 6)); list.add(new Interval(8, 10)); list.add(new Interval(15, 18)); L056_Merge_Intervals tmp = new L056_Merge_Intervals(); List<Interval> res = tmp.merge(list); /*for (Interval item : res){ System.out.print(item); }*/ System.out.println(res); } }