美文网首页雕bug小技程序员
如何检查一组区间中是否存在两个区间有交集

如何检查一组区间中是否存在两个区间有交集

作者: Liutos | 来源:发表于2017-03-19 19:07 被阅读613次
假设有N个区间,将它们表达为 ,其中下标i位于区间 中 为了判定这组区间中是否存在两个区间是有重叠的,首先对这组区间进行排序,使得对于排序后的每一个区间 而言,都有 (这里的i小于N-1)。

为了说明要如何判定这些区间中是否存在重叠,首先我们假设这其中确实存在着至少两个这样的区间,假设分别是第j个和第k个(假设j小于k),它们必然会满足这样的关系

这是因为如果 ,那么所有位于区间 中的数都将会小于 b_k,那么第j个区间与第k个区间就不可能有交集了,因此上述不等式一定成立。再加上这一组区间都是按照区间的下界递增排序的,那么必然有 假设

,由于k和j都是正整数,这意味着在第j和第k个区间之间,必然还存在着一个区间l,那么这个区间的必然满足

这就意味着第j个区间和第l个区间也存在交集,它们的交集是子区间 (这里假设 )。这就说明了,如果可以在一组区间中找到两个不相邻的区间,它们存在重叠的部分,那么一定可以找到第三个区间,使得这个区间与其中的一个区间也存在重叠。

这表示如果我们要判定一组区间是否存在重叠,那么只需要先将它们基于区间的起点按照递增排序后,比较每一对相邻的两个区间是否存在重叠即可。

相关文章

  • 如何检查一组区间中是否存在两个区间有交集

    为了说明要如何判定这些区间中是否存在重叠,首先我们假设这其中确实存在着至少两个这样的区间,假设分别是第j个和第k个...

  • T436、寻找右区间

    给定一组区间,对于每一个区间 i,检查是否存在一个区间 j,它的起始点大于或等于区间 i 的终点,这可以称为 j ...

  • JS判断两个时间区间是否有交集

    自己的思路 -时间交叉判断双层循环,外层循环中的假设是8:00 --- 9:00 outerStartTime...

  • class2-字符串操作

    find:检查str是否包含在my_str或者规定的某个区间中,如果在,返回开始的索引值,否则返回-1。使用格式:...

  • 07/16 黑手大盘分析

    07/16 看空指数 正在2783--2831区间中整理。 下面就是等待整理结果,看是否可以回到2817之上再攻一...

  • kotlin精讲-第5章(2)区间遍历

    区间遍历 前面我们学习了如何定义区间,那如何遍历区间中的元素呢?由于Range已经实现了Iterator接口,所以...

  • MacOS-GitHub配置SSH-2018-07-27

    1、首先运行terminal检查是否已经有SSH Key 这两个命令就是检查是否已经存在 id_rsa.pub 或...

  • 区间贪心算法

    给出N个开区间(x,y),从中选择尽可能多的开区间,使得这些开区间两两没有交集。 区间被包含,选择区间长度短的 区...

  • [Python] 数组归一化

    Normalize 将数组归一化归一化:将一组数据变化到某个固定区间中,通常,这个区间是[0,1],广义的讲,可以...

  • 2. 主动1号 2022-01-19

    连续出 3个 早晨星 方案:两个区间时,区间不要存在 穿插。三个区间时,区间不要存在 穿插。原因:若存在穿插,可以...

网友评论

    本文标题:如何检查一组区间中是否存在两个区间有交集

    本文链接:https://www.haomeiwen.com/subject/sclvnttx.html