美文网首页
2022-03-10 「56. 合并区间」

2022-03-10 「56. 合并区间」

作者: 柠香萌萌鸡 | 来源:发表于2022-03-10 09:23 被阅读0次

今天早上又来二刷,思路还是有点偏离,双指针只想存放当前需要存放的数组边界。
但是看了答案后发现,其实准备存放的数组可以直接存在List中,如果列表为空,或者当前区间与上一区间不重合,直接添加,否则就更新区间的边界。

这里可以关注2个按数组首个元素排序的不同写法:

Arrays.sort(intervals, (v1, v2) -> v1[0] - v2[0]);
Arrays.sort(intervals, new Comparator<int[]>() {
            public int compare(int[] interval1, int[] interval2) {
                return interval1[0] - interval2[0];
            }
        });

如果前面申请的是数组List类型的ans,那最后还要把ans转成二维数组格式:

merged.toArray(new int[merged.size()][]);

还有另外一种解法,更贴近我的思路,这里也贴上来参考:

public static int[][] merge(int[][] intervals) {
        if(intervals.length == 0){
            return new int[][]{};
        }
        Arrays.sort(intervals,(a,b)->{return a[0]-b[0];});
        int[][] res = new int[intervals.length][2];
        int index = 0;
        int start =intervals[0][0],end = intervals[0][1];
        //下一个数组的起始值必须要小于上一个数组的最大值才能合并
        for(int i = 1; i <intervals.length ; i++){
            //如果当前最小界比上一个的最大界小 说明可以合并 ,更新更新后的上界
            if(intervals[i][0]<=end){
                end = Math.max(intervals[i][1], end);
            }else {
                //说明不能继续合并了 ,把之前合并的结果存入结果集中
                res[index][0] = start;
                res[index][1] = end;
                index++;
                //更新start 和 end 为当前新范围
                start = intervals[i][0];
                end = intervals[i][1];
            }
        }
        res[index][0] = start;
        res[index][1] = end;
        return Arrays.copyOfRange(res, 0, index+1);
    }

相关文章

  • LeetCode 56 合并区间

    56. 合并区间 给出一个区间的集合,请合并所有重叠的区间。 示例 1: 输入: [[1,3],[2,6],[8,...

  • 2022-03-10 「56. 合并区间」

    今天早上又来二刷,思路还是有点偏离,双指针只想存放当前需要存放的数组边界。但是看了答案后发现,其实准备存放的数组可...

  • Leetcode-56 合并区间

    56. 合并区间[https://leetcode-cn.com/problems/merge-intervals...

  • LeetCode:合并区间

    56. 合并区间 给出一个区间的集合,请合并所有重叠的区间。示例 1:输入: [[1,3],[2,6],[8,10...

  • 【2】合并区间

    56.合并区间[https://leetcode.cn/problems/merge-intervals/]最初思...

  • LeetCode 56. 合并区间

    56. 合并区间 题目来源:https://leetcode-cn.com/problems/merge-inte...

  • Leetcode【56、670】

    问题描述:【Sort】56. Merge Intervals 解题思路: 这道题是给一个区间集合,合并所有重叠区间...

  • 56.合并区间

  • 56.合并区间

    题目给出一个区间的集合,请合并所有重叠的区间。 示例 1:输入: [[1,3],[2,6],[8,10],[15,...

  • 56.合并区间

    题目描述 给出一个区间的集合,请合并所有重叠的区间。输入: [[1,3],[2,6],[8,10],[15,18]...

网友评论

      本文标题:2022-03-10 「56. 合并区间」

      本文链接:https://www.haomeiwen.com/subject/jclfdrtx.html