56. Merge Intervals

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 }
原文地址:https://www.cnblogs.com/hyxsolitude/p/12324042.html