LintCode问题图解-22

本文准备讲解1个算法编程问题, 这个算法编程问题来自LintCode平台。不了解.LintCode平台的读者可以阅读笔者文章(在线编程平台推荐-LeetCode)。问题的英文版本描述如下:

Insert Interval

A non-overlapping interval list is sorted by start point.

Insert a new interval into it, make sure the list is still in order and non-overlapping (merge intervals if necessary).

Example

Insert [2, 5] into [[1,2], [5,9]], we get [[1,9]].

Insert [3, 4] into[[1,2], [5,9]], we get [[1,2], [3,4], [5,9]].

添加

给出一个无重叠的按照区段起始端点排序的区段列表。

在列表中插入一个新的区段,你要确保列表中的区段仍然有序且不重叠(如果有必要的话,可以合并区段)。

样例

插入区段 [2, 5] 到 [[1,2], [5,9]],我们得到 [[1,9]]

插入区段 [3, 4] 到 [[1,2], [5,9]],我们得到 [[1,2], [3,4], [5,9]]

每个区段含有3种信息:起始端点位置,中止端点位置和列表顺序编号。插入一个新的区段需要知道3种信息:起始端点位置,中止端点位置和列表顺序编号。由于可能出现区段合并操作,新区段的起始端点位置,中止端点位置和列表顺序编号都需要重新计算。输入提供的新区段信息不能直接选用。列表的区段信息可能需要更改。例如,插入区段 [2, 5] 到 [[1,2], [5,9]],我们得到 [[1,9]]


高效的算法
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容