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
如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~