本文共 1191 字,大约阅读时间需要 3 分钟。
数组
以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。
输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].
public class Solution { public int[][] merge(int[][] intervals) { if (intervals.length == 0) { return intervals; } // 对二维数组第一个元素进行排序 Arrays.sort(intervals, (int[] a, int[] b) -> { return a[0] - b[0]; }); Listlist = new ArrayList<>(); // 当前数组 int[] cur = intervals[0]; for (int i = 1; i < intervals.length; i++) { // 下一个数组第一个元素 > 当前数组第二个元素时,不用合并 if (intervals[i][0] > cur[1]) { list.add(cur); cur = intervals[i]; } else { cur[1] = Math.max(cur[1], intervals[i][1]); } } list.add(cur); int[][] result = new int[list.size()][2]; for (int i = 0; i < result.length; i++) { result[i] = list.get(i); } return result; }}
转载地址:http://vcjvb.baihongyu.com/