56 合并区间

Posted HardyDragon_CC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了56 合并区间相关的知识,希望对你有一定的参考价值。

56 合并区间

class Solution 
    public int[][] merge(int[][] intervals) 
        List<int[]> res = new LinkedList<>();
        Arrays.sort(intervals, (o1, o2) -> Integer.compare(o1[0], o2[0]));

        int start = intervals[0][0];
        for (int i = 1; i < intervals.length; i++) 
            if (intervals[i][0] > intervals[i - 1][1]) 
                res.add(new int[]start, intervals[i - 1][1]);
                start = intervals[i][0];
             else 
                intervals[i][1] = Math.max(intervals[i][1], intervals[i - 1][1]);
            
        
        res.add(new int[]start, intervals[intervals.length - 1][1]);
        return res.toArray(new int[res.size()][]);
    

思路:

  1. 对区间按左边界进行升序排序
  2. 按照前后元素比较的方式遍历区间数组,遇到当前区间的左边大于前一个区间的右边界的,说明这两个区间不重叠,可以添加到结果集。反之,遇到重叠区间的需要更新区间的最大右边界。
  3. 当遍历完最后一个左边界后,还需要再添加最后一次区间。
  4. 最后将 list 转换为二维的区间数组

以上是关于56 合并区间的主要内容,如果未能解决你的问题,请参考以下文章

力扣leetcode 56. 合并区间

56. 合并区间

56. 合并区间

题目地址(56. 合并区间)

LeetCode 56. 合并区间

leetcode56 合并区间