题解 | #牛牛的线段合并#

牛牛的线段合并

https://www.nowcoder.com/practice/df82ffc5860644a5943decd1492dd742?tpId=363&tqId=10622278&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[][] 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

如果你觉得本篇文章对你有帮助的话,可以点个赞支持一下,感谢~

全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务