合并区间

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();
      }
    }
}
原文地址:https://www.cnblogs.com/goodtest2018/p/13621804.html