美文网首页
56. 合并区间

56. 合并区间

作者: justonemoretry | 来源:发表于2021-08-12 22:24 被阅读0次
image.png

解法

class Solution {
    public int[][] merge(int[][] intervals) {
        int len = intervals.length;
        if (len <= 1) {
            return intervals;
        }
        Arrays.sort(intervals, Comparator.comparingInt(o -> o[0]));
        // 最后一个区间是否合并
        boolean flag = false;
        List<int[]> res = new ArrayList<>();
        for (int i = 1; i < len; i++) {
            // i从1开始,但实际上没有重合时,加入的是i - 1
            // 方便进行i-1的计算
            int left = intervals[i - 1][0];
            int right = intervals[i - 1][1];
            // 迭代直到新的区间,左侧和之前重合区间最大右侧没有重合
            while (i < len && intervals[i][0] <= right) {
                right = Math.max(right, intervals[i][1]);
                // 内部迭代已经取了最后一个区间
                if (i == len - 1) {
                    flag = true;
                }
                i++;
            }
            res.add(new int[]{left, right});
        }
        // 最后一个区间没有
        if (!flag) {
            res.add(intervals[len - 1]);
        }
        return res.toArray(new int[res.size()][]);
    }
}

相关文章

  • LeetCode 56 合并区间

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

  • 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]...

  • 56. 合并区间

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

网友评论

      本文标题:56. 合并区间

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