检查线性间隔中是否有n个间隔重叠

问题描述

我遇到了以下问题,似乎无法解决,因为我在此网上找到的最快算法是O(nlgn)。可以线性解决吗?

给出n个间隔[ai,bi]。 (对于每个i:ai

我们要确定所有间隔是否彼此不同(不重叠)。用文字描述解决上述问题的线性算法(θ(n))。

例如: 对于n = 5: [0.48,4],[13.31,14],[3.12,5],[8.412,12],[14.27,16] 这里的算法将回答否,因为这两个部分:[3.12,5],[0.48,4]重叠。

解决方法

  1. 按时间间隔的bi值对其进行排序。由于这些值都在1到n 2 之间,因此您可以在线性时间内使用以n为基数的基数排序。 https://en.wikipedia.org/wiki/Radix_sort

  2. 检查每个间隔,看是否与下一个间隔重叠。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...