题解 | #牛舍扩建#

牛舍扩建

https://www.nowcoder.com/practice/2bb8208d18344608bc6bb19a78facad9

考察双指针遍历数组。借助集合的排序,以左边界为标准升序排序后遍历所有元素,对于有重合的进行合并,没有重合的部分直接添加就可以完成了。

完整的Java代码如下所示

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param intervals int整型二维数组 
     * @param new_interval int整型一维数组 
     * @return int整型二维数组
     */
    public int[][] insertNewInterval (int[][] intervals, int[] new_interval) {
        // write code here
        List<int[]> list = new ArrayList<>();
        for(int[] interval: intervals) {
            list.add(interval);
        }
        list.add(new_interval);
        Collections.sort(list, (o1, o2) -> (o1[0] - o2[0]));
        List<int[]> newList = new ArrayList<>();
        int left = list.get(0)[0], right = list.get(0)[1];
        for(int i = 1; i < list.size(); i++) {
            if(right >= list.get(i)[0]) {
                right = Math.max(right, list.get(i)[1]);
            }else {
                newList.add(new int[]{left, right});
                left = list.get(i)[0];
                right = list.get(i)[1];
            }
        }
        newList.add(new int[]{left, right});
        int[][] res = new int[newList.size()][2];
        for(int i = 0; i < newList.size(); i++) {
            res[i] = newList.get(i);
        }
        return res;
    }
}

全部评论

相关推荐

竟然收到了测评听说是双机位
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
苍蓝星上艾露:这简历。。。可以试试我写的开源简历优化工具https://github.com/weicanie/prisma-ai
点赞 评论 收藏
分享
07-25 10:17
仰恩大学 营销
bg双非,被挂了
投递拼多多集团-PDD等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务