题解 | #牛舍扩建# java

牛舍扩建

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param intervals int整型二维数组
     * @param new_interval int整型一维数组
     * @return int整型二维数组
     */
    public int[][] insertNewInterval (int[][] intervals, int[] newInterval) {
        // write code here
        List<int[]> mergedIntervals = new ArrayList<>();
        int i = 0;
        int n = intervals.length;

        // 添加新区间前的不重叠区间
        while (i < n && intervals[i][1] < newInterval[0]) {
            mergedIntervals.add(intervals[i]);
            i++;
        }

        // 合并重叠区间
        while (i < n && intervals[i][0] <= newInterval[1]) {
            newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
            newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
            i++;
        }
        mergedIntervals.add(newInterval);

        // 添加新区间后的不重叠区间
        while (i < n) {
            mergedIntervals.add(intervals[i]);
            i++;
        }

        return mergedIntervals.toArray(new int[mergedIntervals.size()][2]);
    }
}

编程语言是Java。

该题考察的知识点包括:区间合并

代码的文字解释:

  1. 创建一个列表 mergedIntervals,用于存储合并后的区间。
  2. 初始化变量 i 为0,表示现有区间列表的索引。
  3. 使用循环遍历现有区间列表:将不重叠且在新区间之前的区间添加到 mergedIntervals 列表中。合并重叠区间:通过比较现有区间的结束时刻与新区间的起始时刻,来判断是否重叠。如果重叠,更新新区间的起始和结束时刻以合并区间。添加合并后的新区间到 mergedIntervals 列表中。继续添加不重叠且在新区间之后的区间到 mergedIntervals 列表中。
  4. 将合并后的区间列表转换为二维数组,并作为函数的返回值。
全部评论

相关推荐

码农索隆:有点耳熟,你们是我教过最差的一届
点赞 评论 收藏
分享
05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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