题解 | #时间管理大牛#
时间管理大牛
https://www.nowcoder.com/practice/67a93468ba504533a873b3f599cbacb8?tpId=363&tqId=10625108&ru=/exam/oj&qru=/ta/super-company23Year/question-ranking&sourceUrl=%2Fexam%2Foj
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param intervals int整型二维数组 * @return int整型二维数组 */ public int[][] mergeTimeIntervals (int[][] intervals) { Arrays.sort(intervals, Comparator.comparingInt(o->o[0])); ArrayList<int[]> arrayLists = new ArrayList<>(); for (int[] interval : intervals) { // 如果集合为空,表示还没加入第一个元素,肯定不用合并,或者是集合中末尾节点的右端点小于要添加的新节点的左端点,那么也不用合并,直接添加 if (arrayLists.isEmpty() || arrayLists.get(arrayLists.size() - 1)[1] < interval[0]) { arrayLists.add(interval); } else { // 如果集合不为空并且集合末尾节点的右端点大于等于要添加的新节点的左端点,那么进行合并操作,挑选较大的右端点值合并 arrayLists.get(arrayLists.size() - 1)[1] = Math.max(arrayLists.get( arrayLists.size() - 1)[1], interval[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
如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~