LeetCode--56.合并区间(java)

LeetCode--56.合并区间(java)_第1张图片
摘自题解区优质回答

class Solution {
	public int[][] merge(int[][] intervals) {
        if(intervals.length < 2) return intervals;
        // 排序:根据区间开始值升序
        Arrays.sort(intervals, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0] - o2[0];
            }
        });
        List<int[]> list = new ArrayList<>();
        int[] lastInterval = null;
        for (int[] interval : intervals) {//遍历每个区间
        	//该区间尾与上个区间首比较
            if(lastInterval == null || lastInterval[1] < interval[0]){//说明是独立的区间,无法合并
                lastInterval = interval;
                list.add(lastInterval);
            }else if(lastInterval[1] < interval[1]){//上个区间尾 >= 该区间首,再比较俩区间尾元素
                lastInterval[1] = interval[1];
            }
        }
        //这里给的参数的数组长度是0,因此就会返回包含此 collection 中所有元素的数组
        return list.toArray(new int[0][0]);
    }
}

你可能感兴趣的:(LeetCode)