Skip to content

Commit 570a498

Browse files
refactor 56
1 parent f986b8a commit 570a498

File tree

1 file changed

+12
-16
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+12
-16
lines changed

src/main/java/com/fishercoder/solutions/_56.java

+12-16
Original file line numberDiff line numberDiff line change
@@ -7,30 +7,26 @@
77
public class _56 {
88

99
public static class Solution1 {
10+
/**
11+
* My completely original solution on 10/12/2021.
12+
*/
1013
public int[][] merge(int[][] intervals) {
11-
if (intervals.length <= 1) {
12-
return intervals;
13-
}
14-
15-
Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]);
16-
17-
List<int[]> result = new ArrayList();
14+
List<int[]> list = new ArrayList<>();
15+
Arrays.sort(intervals, (a, b) -> a[0] != b[0] ? a[0] - b[0] : a[1] - b[1]);
1816
for (int i = 0; i < intervals.length; i++) {
1917
int start = intervals[i][0];
2018
int end = intervals[i][1];
21-
while (i < intervals.length && end >= intervals[i][0]) {
22-
end = Math.max(end, intervals[i][1]);
19+
while (i + 1 < intervals.length && intervals[i + 1][0] <= end) {
20+
end = Math.max(intervals[i + 1][1], end);
2321
i++;
2422
}
25-
result.add(new int[]{start, end});
26-
i--;
23+
list.add(new int[]{start, end});
2724
}
28-
int[][] finalResult = new int[result.size()][2];
29-
for (int i = 0; i < result.size(); i++) {
30-
finalResult[i][0] = result.get(i)[0];
31-
finalResult[i][1] = result.get(i)[1];
25+
int[][] ans = new int[list.size()][2];
26+
for (int i = 0; i < list.size(); i++) {
27+
ans[i] = list.get(i);
3228
}
33-
return finalResult;
29+
return ans;
3430
}
3531
}
3632

0 commit comments

Comments
 (0)