class Solution {
public int[][] merge(int[][] intervals) {
/*
对于两个区间[x1,y1],[x2,y2];两个区间不是重叠区间的条件是x2>y1,否则两个区间就一定是重叠区间
*/
//现将数组按照左端点升序的方式进行排序
Arrays.sort(intervals,new Comparator<int[]>(){
public int compare(int[] intervals1,int[] intervals2){
return intervals1[0] - intervals2[0];
}
});
List<int[]> list = new ArrayList<>();
for(int i = 0; i < intervals.length;i++){
int startI = intervals[i][0];
int endI = intervals[i][1];
int len = list.size();
//不是重叠区间的情况下
if((len <= 0) || (startI > list.get(len-1)[1]))
list.add(new int[]{startI,endI});
//是重叠区间的情况下
else
list.get(len-1)[1] = Math.max(endI,list.get(len-1)[1]);
}
return list.toArray(new int[0][0]);
}
}
leetcode56. 合并区间
最新推荐文章于 2024-06-15 23:36:03 发布