Merge Intervals LeetCode solution in Java

1
class Solution {
2
public int[][] merge(int[][] intervals) {
3
// sort
4
// unknown size of ans = use ArrayList
5
// insert from back
6
// case 1 : Merging
7
// start of new interval is less that end of old interval
8
// new end = Math.max(new intervals end, old intervals end)
9
// case 2 : Non-merging
10
// seperate interval
11
// convert ArrayList to array and return
12

13
Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
14
ArrayList<int[]> list = new ArrayList<>();
15
for (int i = 0; i < intervals.length; i++) {
16
if (i == 0) {
17
list.add(intervals[i]);
18
} else {
19
int[] prev = list.get(list.size() - 1);
20
int[] curr = intervals[i];
21
if (curr[0] <= prev[1]) {
22
prev[1] = Math.max(curr[1], prev[1]);
23
} else {
24
list.add(curr);
25
}
26
}
27
}
28
return list.toArray(new int[list.size()][2]);
29
}
30
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0