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 considered overlapping.
NOTE: input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.
1 class Solution { 2 private class IntervalComparator implements Comparator<int[]> { 3 public int compare(int []a, int []b) { 4 return a[0] < b[0] ? -1 : a[0] == b[0] ? 0 : 1; 5 } 6 } 7 public int[][] merge(int[][] intervals) { 8 int m = intervals.length; 9 Collections.sort(Arrays.asList(intervals), new IntervalComparator()); 10 LinkedList<int[]> merged = new LinkedList<>(); 11 for (int[] interval : intervals) { 12 if (merged.isEmpty() || merged.getLast()[1] < interval[0]) { 13 merged.add(interval); 14 } else { 15 merged.getLast()[1] = Math.max(merged.getLast()[1], interval[1]); 16 } 17 } 18 return merged.toArray(new int[merged.size()][]); 19 20 } 21 }