Skip to content

Commit 0377dbe

Browse files
committed
finish "56. Merge Intervals". Fix #56
1 parent 2e78dc0 commit 0377dbe

File tree

2 files changed

+77
-5
lines changed

2 files changed

+77
-5
lines changed

README.adoc

+5-5
Original file line numberDiff line numberDiff line change
@@ -284,11 +284,11 @@
284284
|{source_base_url}/JumpGame.java[Java]
285285
|Medium
286286

287-
//|56
288-
//|{leetcode_base_url}/merge-intervals/[Merge Intervals]
289-
//|{source_base_url}/MergeIntervals.java[Java]
290-
//|Medium
291-
//
287+
|56
288+
|{leetcode_base_url}/merge-intervals/[Merge Intervals]
289+
|{source_base_url}/MergeIntervals.java[Java]
290+
|Medium
291+
292292
//|57
293293
//|{leetcode_base_url}/insert-interval/[Insert Interval]
294294
//|{source_base_url}/InsertInterval.java[Java]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.diguage.algorithm.leetcode;
2+
3+
import java.util.Arrays;
4+
import java.util.Comparator;
5+
import java.util.Objects;
6+
7+
import static com.diguage.algorithm.util.PrintUtils.printMatrix;
8+
9+
/**
10+
* = 56. Merge Intervals
11+
*
12+
* https://leetcode.com/problems/merge-intervals/[Merge Intervals - LeetCode]
13+
*
14+
* Given a collection of intervals, merge all overlapping intervals.
15+
*
16+
* .Example 1:
17+
* [source]
18+
* ----
19+
* Input: [[1,3],[2,6],[8,10],[15,18]]
20+
* Output: [[1,6],[8,10],[15,18]]
21+
* Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
22+
* ----
23+
*
24+
* .Example 2:
25+
* [source]
26+
* ----
27+
* Input: [[1,4],[4,5]]
28+
* Output: [[1,5]]
29+
* Explanation: Intervals [1,4] and [4,5] are considered overlapping.
30+
* ----
31+
*
32+
* *NOTE:* input types have been changed on April 15, 2019. Please reset to default code definition to get new method signature.
33+
*
34+
* @author D瓜哥, https://www.diguage.com/
35+
* @since 2019-10-23 12:27
36+
*/
37+
public class MergeIntervals {
38+
public int[][] merge(int[][] intervals) {
39+
if (Objects.isNull(intervals) || intervals.length <= 1) {
40+
return intervals;
41+
}
42+
Arrays.sort(intervals, Comparator.comparingInt(o -> o[0]));
43+
int index = 0;
44+
for (int i = 1; i < intervals.length; i++) {
45+
if (index < 0 || intervals[index][1] < intervals[i][0]) {
46+
intervals[index + 1] = intervals[i];
47+
index++;
48+
} else {
49+
intervals[index][1] = Math.max(intervals[i][1], intervals[index][1]);
50+
}
51+
}
52+
return Arrays.copyOf(intervals, index + 1);
53+
}
54+
55+
public static void main(String[] args) {
56+
MergeIntervals solution = new MergeIntervals();
57+
int[][] matrix = {{8, 10}, {2, 6}, {15, 18}, {1, 3}};
58+
printMatrix(matrix);
59+
int[][] r1 = solution.merge(matrix);
60+
printMatrix(r1);
61+
62+
int[][] matrix2 = {{1, 4}, {4, 5}};
63+
printMatrix(matrix2);
64+
int[][] r2 = solution.merge(matrix2);
65+
printMatrix(r2);
66+
67+
int[][] matrix3 = {{1, 9}, {2, 5}, {19, 20}, {10, 11}, {12, 20}, {0, 3}, {0, 1}, {0, 2}};
68+
printMatrix(matrix3);
69+
int[][] r3 = solution.merge(matrix3);
70+
printMatrix(r3);
71+
}
72+
}

0 commit comments

Comments
 (0)