如何获得重叠集合中的碰撞数量?

时间:2017-05-14 21:05:44

标签: algorithm

对于我正在做的项目,我有

形式的集合列表

[ [start, end] ]

例如

[{1, 3} {2, 4} {5, 9} {6, 8} {7, 8}]

数组处于排序状态。

我想找到重叠碰撞的数量。例如,来自示例数据集。

enter image description here

我想要的结果如下。

 Interval | Collisions
----------------------
 {7,8}    | 3
 {2,3}    | 2
 {6,7}    | 2
 {1,2}    | 1
 {3,4}    | 1
 {5,6}    | 1
 {8,9}    | 1

实现它的理想方法是什么?

1 个答案:

答案 0 :(得分:3)

您可以将每个list-element转换为两个元素,一个只表示开头,另一个表示结尾。然后,对结果进行排序,为您提供:

  • 从1开始
  • 从2开始
  • 以3结束
  • 以4结束
  • 从5开始
  • 从6开始
  • 从7开始
  • 以8结束
  • 以8结束
  • 以9结束

现在,您可以遍历列表,跟踪您在每个点输入和退出的套数。