力扣 | 56. 合并区间

力扣 | 56. 合并区间_第1张图片

public class Problem_56_merge_intervals {
    public int[][] merge(int[][] intervals) {
        if (intervals.length == 0) return new int[0][2];

        Arrays.sort(intervals, (o1, o2) -> o1[0] - o2[0]);//按照每个区间的左边第一个排序

        List<int[]> outputs = new ArrayList<>();
        outputs.add(intervals[0]);
        for (int i = 1; i < intervals.length; i++) {
            int[] lastInterval = outputs.get(outputs.size() - 1);
            int currLeft = intervals[i][0];
            int currRight = intervals[i][1];
            if (lastInterval[1] < currLeft) {//没有区间重叠部分
                outputs.add(intervals[i]);
            } else {//有重叠部分
                lastInterval[1] = Math.max(lastInterval[1], currRight);
            }
        }

        return outputs.toArray(new int[outputs.size()][2]);
    }

    public static void main(String[] args) {
        System.out.println(new int[0][1].length);
    }
}

你可能感兴趣的:(编程语言,计算机基础,算法学习,leetcode,算法,职场和发展)