首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将区间插入到不相交的区间集中

问将区间插入到不相交的区间集中
EN

Stack Overflow用户
提问于 2013-01-23 01:33:15
回答 1查看 1.3K关注 0票数 1

给定排序的不相交集合(p,q),其中‘p’是开始时间,‘q’是结束时间。您将获得一个输入间隔。将其插入到正确的位置。并返回排序后的不相交集合。

代码语言:javascript
复制
Eg: (1,4);(5,7);(8,10);(13,18)

Input interval – (3,7)
Result : (1,7);(8,10);(13,18)

Input Interval – (1,3)
Result: (1,4);(5,7);(8,10);(13,18)

Input interval – (11,12)
Result: (1,4);(5,7);(8,10);(11,12);(13,18)

Inserting an interval in a sorted list of disjoint intervals,这里没有有效的答案

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-23 01:40:54

你的问题和例子暗示了不重叠的区间。在这种情况下,您只需执行binary search -无论是按开始时间还是按结束时间进行比较,对于不重叠的间隔都无关紧要-并在找到的位置插入新间隔(如果尚未存在)。

更新

我错过了第一个示例中发生的合并。一种糟糕的情况是将一个大间隔插入到短间隔的长列表中,其中长间隔与许多短间隔重叠。为了避免对必须合并的所有间隔进行线性搜索,可以执行两个二进制搜索-一个从左开始比较开始时间,另一个从右比较结束时间。

现在很容易确定间隔是否存在,是否必须插入,或者是否必须与两次搜索找到的位置之间的间隔合并。虽然这并不是很复杂,但它可能非常容易出现off-by-one errors,并且需要一些测试。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14464607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档