| 1 | class Solution { |
| 2 | |
| 3 | public int[][] merge(int[][] intervals) { |
| 4 | ArrayList<int[]> ans = new ArrayList<>(); |
| 5 | Arrays.sort(intervals, (a, b) -> Integer.compare(a[0], b[0])); |
| 6 | ans.add(intervals[0]); |
| 7 | for (int i = 1; i < intervals.length; i++) { |
| 8 | //comparing the values of prevEnd and curStart |
| 9 | int curStart = intervals[i][0]; |
| 10 | if (curStart <= ans.get(ans.size() - 1)[1]) { |
| 11 | //do the merging |
| 12 | ans.get(ans.size() - 1)[1] = |
| 13 | Math.max(ans.get(ans.size() - 1)[1], intervals[i][1]); |
| 14 | } else { |
| 15 | ans.add(intervals[i]); |
| 16 | } |
| 17 | } |
| 18 | int[][] res = new int[ans.size()][2]; |
| 19 | ans.toArray(res); |
| 20 | return res; |
| 21 | } |
| 22 | } |