题解 | #牛舍扩建#

题目考察的知识点

本题考察的主要知识点是数组操作和区间合并算法。

题目解答方法的文字分析

  1. 首先,我们需要遍历区间列表,找到新区间应该插入的位置,以及与新区间有重叠的区间。
  2. 创建一个空数组 merged 用于存储合并后的区间。
  3. 初始化一个指针 i,用于遍历区间列表。
  4. 第一个循环:将所有起始时间早于新区间的区间添加到结果数组 merged 中。
  5. 第二个循环:遍历与新区间重叠的区间,进行合并操作。更新新区间的起始时间为新区间和重叠区间起始时间的较小值,更新新区间的结束时间为新区间和重叠区间结束时间的较大值。
  6. 第三个循环:将剩余的区间添加到结果数组 merged 中。
  7. 返回 merged 数组作为结果。

本题解析所用的编程语言

上述代码使用的是JavaScript语言。

完整且正确的编程代码

function insertNewInterval(intervals, newInterval) {
  const merged = [];
  let i = 0;
  
  // 将所有起始时间早于新区间的区间添加到结果数组中
  while (i < intervals.length && intervals[i][1] < newInterval[0]) {
    merged.push(intervals[i]);
    i++;
  }
  
  // 合并与新区间重叠的区间
  while (i < intervals.length && intervals[i][0] <= newInterval[1]) {
    newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
    newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
    i++;
  }
  
  // 添加合并后的新区间到结果数组
  merged.push(newInterval);
  
  // 添加剩余的区间到结果数组
  while (i < intervals.length) {
    merged.push(intervals[i]);
    i++;
  }
  
  return merged;
}
题解 | 前端刷题 文章被收录于专栏

题目考察的知识点 题目解答方法的文字分析 本题解析所用的编程语言 完整且正确的编程代码

全部评论

相关推荐

扭转乾坤_:现在企业都是学华为,一直通过丢池子里,最后捞
点赞 评论 收藏
分享
主页这么好的公司是谁在进啊:虽然很想感谢你的分享,但是此刻的嫉妒和酸气已经涌上心头,所以我撤销一下对你的感谢吧,希望你能原谅我
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务