题目
思路
-
代码
public int[][] merge(int[][] intervals) {if (intervals.length == 0) {return new int[0][2];}Arrays.sort(intervals, new Comparator<int[]>() {public int compare(int[] interval1, int[] interval2) {return interval1[0] - interval2[0];}});List<int[]> merged = new ArrayList<int[]>();for (int i = 0; i < intervals.length; ++i) {int L = intervals[i][0], R = intervals[i][1];if (merged.size() == 0 || merged.get(merged.size() - 1)[1] < L) {merged.add(new int[]{L, R});} else {merged.get(merged.size() - 1)[1] = Math.max(merged.get(merged.size() - 1)[1], R);}}return merged.toArray(new int[merged.size()][]);}//自己实现排序public int[][] merge(int[][] intervals) {int len = intervals.length;if (len <= 1) return intervals;for (int i = 1; i < len; i++) {int j = i - 1;int[] val = intervals[i] ;while (j >= 0 && intervals[j][0] > val[0]) {intervals[j + 1] = intervals[j];j--;}intervals[j + 1] = val;}List<int[]> res = new ArrayList<>();for (int i = 1; i < len; i++) {if (intervals[i - 1][1] >= intervals[i][0]) {intervals[i][0] = intervals[i - 1][0];if (intervals[i- 1][1] > intervals[i][1])intervals[i][1] = intervals[i - 1][1];} else {res.add(intervals[i - 1]);}if (i == len - 1) res.add(intervals[i]);}return res.toArray(new int[0][0]);}
