package my; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class MergeIntervals { int[][] merge(int[][] intervals){ Arrays.sort(intervals,(i1,i2) ->i1[0]-i2[0]); //按照区间起始位置排序 // Arrays.sort(intervals,(v1,v2) -> Integer.compare(v1[0],v2[0])); //定义一个previous变量,初始化为null int[] previous = null; //定义一个result变量,用来保存最终的区间结果 List<int[]> result = new ArrayList<>(); //从头开始遍历给定的所有区间 for(int[] current : intervals){ //如果这个是第一个区间,或者当前区间和前一个区间没有重叠,那么将当前区间加入到结果中 if(previous == null || current[0] > previous[1]){ result.add(previous = current); }else{ //否则,两个区间发生了重叠,更新前一个区间的结束时间 previous[1] = Math.max(previous[1],current[1]); } } return result.toArray(new int[result.size()][]); } public static void main(String[] args){ int[][] inte= {{1,4},{2,5},{6,9},{7,10},{11,45}}; MergeIntervals mi = new MergeIntervals(); int[][] aa= mi.merge(inte); for (int i=0 ;i <aa.length;i++){ for(int j=0;j <aa[i].length;j++){ System.out.println(aa[i][j] + " "); } System.out.println(); } } }