class Solution {
public int[][] merge(int[][] arr) {
Arrays.sort(arr,(a,b)->a[0]-b[0]);
List<int[]> ans = new ArrayList<>();
for(int i =0;i<arr.length;i++){
// 最后一个区间元素肯定会被加入答案
if(i == arr.length-1){
ans.add(arr[arr.length-1]);
continue;
}
if(arr[i][1]>=arr[i+1][0] && arr[i][1]<=arr[i+1][1]){
arr[i+1][0] = arr[i][0];
}else if(arr[i][1]>=arr[i+1][0] && arr[i][1]>arr[i+1][1]){
arr[i+1][0] = arr[i][0];
arr[i+1][1] = arr[i][1];
}else{
ans.add(arr[i]);
}
}
return ans.toArray(new int[ans.size()][]);
}
}
题解:
对数组中元素按数组第一个元素大小排序,模拟比较,注意最后一项特殊处理,注意[0,4],[1,3]的情况。
数据结构:
List<int[]> ans = new ArrayList<>();
用到方法:
排序方法 Arrays.sort(arr,(a,b)->a[0]-b[0]);
List转Array方法:ans.toArray(new int[ans.size()][]);