安阳网站建设,苏州工业园区限电,一个网站锚文本可以做几个,关于做电影的网站设计1.leetcode原题链接#xff1a;. - 力扣#xff08;LeetCode#xff09;
2.题目描述
以数组 intervals 表示若干个区间的集合#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间#xff0c;并返回 一个不重叠的区间数组#xff0c;该数…1.leetcode原题链接. - 力扣LeetCode
2.题目描述
以数组 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] 可被视为重叠区间。 3.实现方法
1.将所有区间按照左边界排序
2.定义一个结果List遍历排序后的区间
2.1 如果结果List没数据 或者 当前数组的左边界比结果List最后一个区间的右边界大不能合并直接添加到结果数组
2.2 否则可以合并合并后的右边界取当前结果LIst最后一个区间的右边界和当前区间的右边界的最大值。
注意排序后不会出现三个相邻区间第一个和第三个能合并第一个和第二个 或 第二个和第三个不能合并的情况所有能够合并的区间都必然是连续的。
class Solution {public int[][] merge(int[][] intervals) {// 定义一个结果数组Listint[] list new ArrayList();//1.将所有区间按照左边界排序Arrays.sort(intervals,new Comparatorint[](){public int compare(int[] o1,int[] o2){return o1[0] -o2[0];}});//2. 遍历排序后的区间逐个合并for(int[] interval : intervals){//记录当前的左右边界int leftinterval[0];int rightinterval[1];//获取结果数组的长度int lengthlist.size();//如果结果数组没数据 或者 left比最后一个区间的右边界大不能合并直接添加到结果数组if(length0 || leftlist.get(length-1)[1]){list.add(interval);}else{//可以合并int mergedLeftlist.get(length-1)[0];int mergedRightMath.max(list.get(length-1)[1],right);//注意合并只是更新(set)而不是添加(add)list.set(length-1,new int[]{mergedLeft,mergedRight});}}return list.toArray(new int[list.size()][]);}
}