免费网站制作软件的app,品牌营销推广方案,app如何转wordpress,温州网站网站建设56.合并区间 排序#xff1a; 如果按照区间的左端点排序#xff0c;那么在排完序的列表中#xff0c;可以合并的区间一定是连续的#xff0c;如下图所示#xff0c;标记为蓝色、黄色和绿色的区间分别可以合并为一个大区间#xff0c;它们在排完序的列表中是连续的 算法 如果按照区间的左端点排序那么在排完序的列表中可以合并的区间一定是连续的如下图所示标记为蓝色、黄色和绿色的区间分别可以合并为一个大区间它们在排完序的列表中是连续的 算法
使用数组merged存储最终的答案
首先将列表中的区间按照左端点升序排序然后我们将第一个区间加入merged数组中并按顺序依次考虑之后的每个区间
如果当前区间的左端点在数组merged中最后一个区间的右端点之后那么它们不会重合我们可以直接将这个区间加入数组merged的末尾否则它们重合需要用当前区间的右端点更新数组merged中最后一个区间的右端点将其设置二者的较大值
class Solution {public int[][] merge(int[][] intervals) {if(intervals.length 0){return new int[0][2];}Arrays.sort(intervals,new Comparatorint[]() {public int compare(int[] interval1,int[] interval2){return interval1[0] - interval2[0];}});Listint[] merged new ArrayListint[]();for(int i 0;iintervals.length;i){int L intervals[i][0],R intervals[i][1];if(merged.size() 0 || merged.get(merged.size()-1)[1] L){merged.add(new int[]{L,R});}else{merged.get(merged.size() -1 )[1] Math.max(merged.get(merged.size()-1)[1],R);}}return merged.toArray(new int[merged.size()][]);}
}