标签:HERE interval class exp return start sort art nbsp
Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input. Example 1: Input: intervals = [[1,3],[2,6],[8,10],[15,18]] Output: [[1,6],[8,10],[15,18]] Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6]. Example 2: Input: intervals = [[1,4],[4,5]] Output: [[1,5]] Explanation: Intervals [1,4] and [4,5] are considered overlapping. Constraints: 1 <= intervals.length <= 104 intervals[i].length == 2 0 <= starti <= endi <= 104
class Solution { public int[][] merge(int[][] intervals) { // sort intervals array by their start Arrays.sort(intervals, (a, b) -> a[0] - b[0]); List<int[]> res = new ArrayList<>(); for (int i = 0; i < intervals.length - 1; i++) { if (intervals[i][1] < intervals[i+1][0]) { res.add(intervals[i]); } else { intervals[i+1][0] = intervals[i][0]; intervals[i+1][1] = Math.max(intervals[i][1], intervals[i+1][1]); } } res.add(intervals[intervals.length - 1]); return res.toArray(new int[res.size()][2]); } }
标签:HERE interval class exp return start sort art nbsp
原文地址:https://www.cnblogs.com/incrediblechangshuo/p/14398902.html