import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param intervals int整型二维数组
* @return int整型二维数组
*/
public int[][] mergeIntervals (int[][] intervals) {
ArrayList<int[]> arrayLists = new ArrayList<>();
for (int i = 0; i < intervals.length; i++) {
// 如果集合为空或者最后一个区间的右端点小于要添加到左端点
if(arrayLists.isEmpty()||arrayLists.get(arrayLists.size()-1)[1]<intervals[i][0]){
arrayLists.add(intervals[i]);
}else{
// 如果右端点大于等于要添加元素的左端点,选择两个元素的右端点的较大值作为新的右端点合并。
arrayLists.get(arrayLists.size()-1)[1] = Math.max(arrayLists.get(arrayLists.size()-1)[1],intervals[i][1]);
}
}
int [][] result = new int[arrayLists.size()][];
for (int i = 0; i < arrayLists.size(); i++) {
result[i] = arrayLists.get(i);
}
return result;
}
}
本题知识点分析:
1.有序集合存取
2.数组遍历
3.数学模拟
本题解题思路分析:
1.如果集合为空或者最后一个区间的右端点小于要添加到左端点
2.如果右端点大于等于要添加元素的左端点,选择两个元素的右端点的较大值作为新的右端点合并。
3.集合转数组返回即可
本题使用编程语言: Java
如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~

京公网安备 11010502036488号