algorithm - 如何获得重叠集中的碰撞次数?

标签 algorithm

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

形式的集合列表

[[开始,结束]]

例如

[{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 开始
  • 2 点开始
  • 3 点结束
  • 4 点结束
  • 5 点开始
  • 6 点开始
  • 7 点开始
  • 8 点结束
  • 8 点结束
  • 9 点结束

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

关于algorithm - 如何获得重叠集中的碰撞次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43968784/

相关文章:

algorithm - 用于将数字区域划分为具有最相等总和的分区的贪婪算法?

c# - 在 C# 中将字符强行插入文本框

javascript - 在 javascript 中使用值返回所有深度对象的嵌套键的好方法

algorithm - 二项式堆 : proof that merge runs in O(log n) time

c++ - 在未排序的数组中查找最小/最大 K 元素的最有效算法是什么?

.net - 有没有比 Levenshtein 距离 "better"的字符串比较算法?

algorithm - 什么是像样的初学者图形拼图?

algorithm - 图形差异和版本控制工具

c# - 在大量数据中快速(子)字符串搜索

string - 压缩后如何创建 X 大小的字符串?