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]]


LintCode问题图解-22_第1张图片
高效的算法

你可能感兴趣的:(LintCode问题图解-22)