1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| public int[][] merge(int[][] a) { if(a.length==0)return new int[][]{}; Integer[][] intervals = new Integer[a.length][a[0].length]; cpy(a, intervals); Arrays.sort(intervals, new Comparator<Integer[]>() {
@Override public int compare(Integer[] x, Integer[] y) { if(x[0] < y[0]){ return -1; } else if(x[0] > y[0]){ return 1; } else { return 0; } }
});
ArrayList<Integer[]> list = new ArrayList<>(); for(int i=0;i<intervals.length;i++) { int j = i; Integer[] tIntegers = new Integer[2]; tIntegers[0] = intervals[i][0]; tIntegers[1] = intervals[i][1]; while(i+1<=intervals.length-1&&intervals[i+1][0]<=tIntegers[1]) { if(intervals[i+1][1]>tIntegers[1]) { tIntegers[1] = intervals[i+1][1]; } i++; } list.add(tIntegers); } int[][] res = new int[list.size()][2]; for(int i=0;i<list.size();i++) { Integer[] integers = list.get(i); res[i][0] = integers[0]; res[i][1] = integers[1]; } return res; }
|