1. 首页
  2. 软件开发
  3. day-40 合并区间

day-40 合并区间

  • 发布于 2024-09-26
  • 1 次阅读


思路
将二维数组按照第一列升序排列,把intervals[0][0]作为第一个区间的起点,将
intervals[0][1]和intervals[1][0]进行比较,如果intervals[0][1]

解题过程
注意: 要写为list.add(new ArrayList§),如果list.add§这样,p.clear()会清空数据

Code

class Solution {

    public  List<List<Integer>> list=new ArrayList<>();
    public  int row;
    public int[][] merge(int[][] intervals) {

        Arrays.sort(intervals,(a,b)->a[0]-b[0]);//二维数组中每行数组中的第一个数按从小到大的顺序进行排列
        row=intervals.length;
        List<Integer> p=new ArrayList<>();
        p.add(intervals[0][0]);
        method(p,0,intervals);
        int ans[][]=listTo2DArray(list);
        return ans;
    }
    public void method(List<Integer> p,int position,int[][] intervals){

        if(position+1==row){
       //最后一行
            p.add(intervals[position][1]);
            list.add(p);
        }else{

            if(intervals[position][1]>=intervals[position+1][0]){

                intervals[position+1][1]=Math.max(intervals[position][1],intervals[position+1][1]);
                method(p,position+1,intervals);
            }else{

                p.add(intervals[position][1]);
                list.add(new ArrayList(p));
                p.clear();
                p.add(intervals[position+1][0]);
                method(p,position+1,intervals);
            }
        }
    }

    public static int[][] listTo2DArray(List<List<Integer>> listOfLists) {

        int rows = listOfLists.size();
        int cols = 0;
        for (List<Integer> list : listOfLists) {

            cols = Math.max(cols, list.size()); // 获取最大列数
        }

        int[][] twoDimArray = new int[rows][cols];
        for (int i = 0; i < rows; i++) {

            List<Integer> rowList = listOfLists.get(i);
            for (int j = 0; j < rowList.size(); j++) {

                twoDimArray[i][j] = rowList.get(j);
            }
        }
        return twoDimArray;
    }
}

作者:菜卷
链接:https://leetcode.cn/problems/merge-intervals/solutions/2893781/he-bing-qu-jian-by-ashi-jian-chong-dan-l-0mr3/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文链接: https://blog.csdn.net/qq_53568730/article/details/141574941