栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

leetcode56——合并区间

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode56——合并区间

题意:

 解法:

class Solution {
    public int[][] merge(int[][] intervals) {//n行  2列
        //尾元素 大于下一组的首元素 就要合并
        //先进行数组 排序 即 [1,3]  [2,6]
        if(intervals.length==1) return intervals;
        int[][] res=new int[intervals.length][];

        ArrayList list=new ArrayList<>();

        //按首元素 进行排序
        intervals=sortmaopao(intervals);

        int big=0;

        int start1=0;
        int start2=0;
        int end1=0;
        int end2=0;

        int count=0;
        for(int k=0;k=start2){
                //缩小处理

                if(end1>end2){
                    //直接加入  k所在数组
                    intervals[big]=intervals[k];//更新 big值

                    //list.add(intervals[k]);
                }else{
                    //取k的首  取big的尾
                    intervals[big][0]=start1;//更新big值
                    //list.add(intervals[big]);
                }

                //如何更新呢
            }else{
                //list.add(intervals[k]);
                //res[count++]=intervals[k];

                list.add(new int[] {intervals[k][0],intervals[k][1]});
            }

        } 

       // return res;
       return  list.toArray(new int[list.size()][2]);


    }

    //先将数组进行排序
    public int[][] sortmaopao(int[][] intervals){
        if(intervals.length==1) return intervals;

        //利用冒泡排序 
        int[] tem=null;
        for(int i=0;iintervals[j][0]){
                    tem=intervals[i];

                    intervals[i]=intervals[j];

                    intervals[j]=tem;
                }
            }
        }

        return intervals;
    }
}

思路: 原数组 是一个n行 2列的数组

先按照每行的首 num 进行排序

然后分情况比较

知识点:

如何返回一个保存不定长度的数组呢?

如果使用int[] num=new int[x];  那么数组长度一开始就固定死了,当然你也可以通过Array去操作 但略显麻烦

推荐方法:

第一步:
集合返回数组  即 list.toArray()

ArrayList list=new ArrayList<>();

第二步:

本题是要返回一个二维数组   ,而 集合返回的是一个一维数组,

那么我们在添加元素的时候 在一维数组里  加入一维数组即可

list.add(new int[] {intervals[k][0],intervals[k][1]});

第三步:

list.Array()  是集合转换为数组的方法

list.toArray(new int[list.size()][2])  是定义一个多大的数组

list.toArray(new int[list.size()][2])

# 排序

排序算法累计ing

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665986.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号