- 用
ArrayList<int[]> merged = new ArrayList<>();
来定义数组的list - 将数组进行排序
Arrays.sort(intervals,(a,b) -> Integer.compare(a[0],b[0]));
- 如果前面的末尾>=后面的初始,那么新的currentInterval的末尾=这两个数组末尾的最大值,即
if(currentInterval[1]>=intervals[i][0]){//res[i][0]=intervals[i][0];currentInterval[1]=Math.max(intervals[i][1],currentInterval[1]);}
- 否则,新的currentInterval直接等于intervals[i];
- 循环结束之后,只是对最后一个区间进行了判断,但是没有加进merged中,因此要把最后一个区间加进去。
- 转换成数组形式
merged.toArray(new int[merged.size()][]);
class Solution {public int[][] merge(int[][] intervals) {int len = intervals.length;if(len == 0) {return new int[0][0];}//按照每个区间的起始值进行排序Arrays.sort(intervals,(a,b) -> Integer.compare(a[0],b[0]));ArrayList<int[]> merged = new ArrayList<>();int[] currentInterval = intervals[0];//int[][] res = new int[len][intervals[len-1].length];for(int i =1; i<len;i++){// res[i][0]=intervals[i][0];// res[i][1]=intervals[i][1];if(currentInterval[1]>=intervals[i][0]){//res[i][0]=intervals[i][0];currentInterval[1]=Math.max(intervals[i][1],currentInterval[1]);}else{merged.add(currentInterval);currentInterval = intervals[i];}}// 添加最后一个区间merged.add(currentInterval);return merged.toArray(new int[merged.size()][]);}
}