我有一个带有n 个整数间隔的巨大数据库表(例如 {1-5}、{4-16}、{6434-114343}),需要找出哪些间隔相互重叠。关于 SO有很多 类似的问题,但不同的是我需要分别为每个间隔返回一组重叠间隔。
------------------ A -------------------
------ B ------- ----- D -----
--------- C ---------
对于此示例,输出将是A:{B,C,D} B:{A,C} C:{A,B} D:{A}
最坏的情况是,所有区间可能相互重叠,产生大小为 O( n 2 ) 的输出。这并不比简单的解决方案更好(比较每对间隔)。然而,在实践中,我知道我的间隔很少会与其他间隔重叠,而且当它们重叠时,最多只有 5 个其他间隔。
鉴于此信息,我应该如何解决问题?(最理想的情况是,我想要一个 SQL 查询解决方案,因为数据在数据库中,但我认为只有常规的算法解决方案是可能的。)