import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
/**
* @author xnl
* @Description:
* @date: 2022/6/8 22:50
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
// int[][] intervals = {{1,3},{2,6},{8,10},{15,18}};
int[][] intervals = {{1,4},{0,4}};
int[][] merge = solution.merge(intervals);
for (int[] m : merge) {
System.out.print(Arrays.toString(m) + " ");
}
}
public int[][] merge(int[][] intervals) {
if (intervals[0].length == 0){
return new int[0][2];
}
// 按照数组的第一个数字进行排序
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0] - o2[0];
}
});
List<int[]> ans = new ArrayList<>();
for (int i = 0; i < intervals.length; i++){
int index_1 = intervals[i][0], index_2 = intervals[i][1];
// 如果说前一个的最大数小于下一个数组的最小数,说明前一个数已经把区间划分出来了,直接加入结果集中
if (ans.size() == 0 || ans.get(ans.size() - 1)[1] < index_1 ){
ans.add(new int[]{index_1, index_2});
} else {
// 证明数组在这个区间中,判断是是否大于当前结果集中的最大值,是的话,进行替换。
ans.get(ans.size() - 1)[1] = Math.max(ans.get(ans.size() - 1)[1], index_2);
}
}
return ans.toArray(new int[ans.size()][2]);
}
}
力扣:剑指 Offer II 074. 合并区间
于 2022-06-08 23:27:12 首次发布