Leetcode刷题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] 可被视为重叠区间。

思路:

先将所有列表按第一个元素排列好顺序。比如a=[1,5],b=[2,7],因为a[1]>b[0],所以两个列表有重合部分。数列左边已经确定为a[0],只要比较a[1]和b[1]谁大即可。用left来记录数列左区间,用right来记录数列右区间。然后将一个个列表分别加入到大列表中。

通过答案:

class Solution {
    public int[][] merge(int[][] intervals) {
        int len=intervals.length;      //列表数量
        List res=new ArrayList<>();    //大列表
        if (intervals == null || intervals.length == 0)
            return res.toArray(new int[0][]);
        //Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
        Arrays.sort(intervals,new Comparator(){    //按每个列表第一个元素排列,如果a1[0]>a2[0]就交换顺序
            public int compare(int[] a1,int[] a2){
                return a1[0]-a2[0];
            }
        });
        int i=0;
        while(i

 

 

你可能感兴趣的:(LeetCode刷题)