题解 | #牛舍扩建#
题目考察的知识点
本题考察的主要知识点是数组操作和区间合并算法。
题目解答方法的文字分析
- 首先,我们需要遍历区间列表,找到新区间应该插入的位置,以及与新区间有重叠的区间。
- 创建一个空数组
merged
用于存储合并后的区间。 - 初始化一个指针
i
,用于遍历区间列表。 - 第一个循环:将所有起始时间早于新区间的区间添加到结果数组
merged
中。 - 第二个循环:遍历与新区间重叠的区间,进行合并操作。更新新区间的起始时间为新区间和重叠区间起始时间的较小值,更新新区间的结束时间为新区间和重叠区间结束时间的较大值。
- 第三个循环:将剩余的区间添加到结果数组
merged
中。 - 返回
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;
}
题解 | 前端刷题 文章被收录于专栏
题目考察的知识点 题目解答方法的文字分析 本题解析所用的编程语言 完整且正确的编程代码