徐州网站排名公司,设计官网页面多少钱,二手房网站谁做的更好,上海奥美广告有限公司跟着carl学算法#xff0c;本系列博客仅做个人记录#xff0c;建议大家都去看carl本人的博客#xff0c;写的真的很好的#xff01; 代码随想录 LeetCode#xff1a;56.合并区间 以数组 intervals 表示若干个区间的集合#xff0c;其中单个区间为 intervals[i] [starti,… 跟着carl学算法本系列博客仅做个人记录建议大家都去看carl本人的博客写的真的很好的 代码随想录 LeetCode56.合并区间 以数组 intervals 表示若干个区间的集合其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间并返回 一个不重叠的区间数组该数组需恰好覆盖输入中的所有区间 。 示例 1 输入intervals [[1,3],[2,6],[8,10],[15,18]] 输出[[1,6],[8,10],[15,18]] 解释区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6]. 示例 2 输入intervals [[1,4],[4,5]] 输出[[1,5]] 解释区间 [1,4] 和 [4,5] 可被视为重叠区间。 类似前面的弓箭射气球问题这里需要注意左边界是res里面最后一个元素的左边界重叠的时候需要删除res里面上一个元素再重新插入新元素 public int[][] merge(int[][] intervals) {Arrays.sort(intervals, (o1, o2) - Integer.compare(o1[0], o2[0]));LinkedListint[] res new LinkedList();res.add(intervals[0]);for (int i 1; i intervals.length; i) {if (intervals[i][0] intervals[i - 1][1]) {intervals[i][1] Math.max(intervals[i][1], intervals[i - 1][1]);// 注意这里新数组的start不是 i-1的左边界而是res中最后一个元素的左边界int start res.getLast()[0];int end intervals[i][1];// 注意这里需要移除res中最后一个的元素 然后才能插入新元素res.removeLast();res.add(new int[] { start, end });} else {res.add(intervals[i]);}}return res.toArray(new int[res.size()][]);}