1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| private static int[][] merge(int[][] a) { if (a == null || a.length == 0 || a[0].length == 0) { return new int[0][2]; } Arrays.sort(a, Comparator.comparingInt(item -> item[0])); List<int[]> res = new ArrayList<>(); for (int[] arr : a) { int left = arr[0]; int right = arr[1]; if (res.size() == 0 || res.get(res.size() - 1)[1] < left) { res.add(new int[]{left, right}); } else { int newRight = Math.max(res.get(res.size() - 1)[1], left); res.set(res.size() - 1, new int[]{res.get(res.size() - 1)[0], newRight}); } } return res.toArray(new int[res.size()][2]); }
|