56. 合并区间
题解
执行耗时:9 ms,击败了23.07% 的Java用户 内存消耗:41.2 MB,击败了23.64% 的Java用户
class Solution {public int[][] merge(int[][] intervals) {Arrays.sort(intervals, Comparator.comparingInt(o -> o[0]));// 用于保存合并的结果List<int[]> merged = new ArrayList<>();for (int i = 0; i < intervals.length; i++) {int L = intervals[i][0], R = intervals[i][1];int size = merged.size();// 如果merge为空// 或者如果merge最后一个元素的右边小于当前数组的左边,说明与上一元素不重叠// 直接将当前数组添加到mergedif (size == 0 || merged.get(size - 1)[1] < L) {merged.add(new int[] {L, R});} else {// 否则说明需要合并// 合并的方法是更新merged的最后一个元素的右边// 取当前数组的右边与merged的最后一个元素的右边中的大值merged.get(size - 1)[1] = Math.max(R, merged.get(size - 1)[1]);}}return merged.toArray(new int[merged.size()][2]);}}
