56. 合并区间
2021-07-22 本文已影响0人
名字是乱打的
思路:
先按照起始值排序
- 如果未存储值或者目前元素的左便捷大于上个已安排元素的右边界
则存入新值 - 其他情况就是当前元素左边界在上个元素区间内,这里决定要不要扩充上个元素的右边届
代码:
class Solution {
public int[][] merge(int[][] intervals) {
//按照起始值排序
Arrays.sort(intervals, Comparator.comparingInt(i -> i[0]));
int [][] res=new int[intervals.length][2];
int setResIndex=-1;
for (int[] interval : intervals) {
if (setResIndex==-1||interval[0]>res[setResIndex][1]){
res[++setResIndex]=interval;
}else {
res[setResIndex][1]=Math.max(res[setResIndex][1],interval[1]);
}
}
return Arrays.copyOf(res,setResIndex+1);
}
}