56. 合并区间

给出一个区间的集合,请合并所有重叠的区间。

示例 1:

输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

输入: [[1,4],[4,5]]
输出: [[1,5]]
解释: 区间 [1,4] 和 [4,5] 可被视为重叠区间。

class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals,(o1,o2)->(o1[0] - o2[0]));
        //遍历 intervals
        List<int[]> list = new ArrayList<>();
        int i = 0;
        while(i < intervals.length){
            int maxR = intervals[i][1];
            int j = i + 1;
            while(j < intervals.length && intervals[j][0] <= maxR){
                //取较大值
                maxR = Math.max(intervals[j][1],maxR);
                j++;
            }
            list.add(new int[]{intervals[i][0],maxR});
            i = j;
        }
        return list.toArray(new int[0][]);  
    }
}

 

posted @ 2020-04-09 17:15  海绵爱上星  阅读(120)  评论(0编辑  收藏  举报