找到一组间隔的最大深度

时间:2017-10-06 22:22:47

标签: algorithm computational-geometry intervals greedy

给定一组间隔I,形式[a_i,b_i]的每个元素在 O(n * logn)时间内找到最大深度的终点b_i。将x的深度定义为点“刺”(或相交)的间隔数。如果两个终点具有相同的深度,则返回较小的一个。

尝试:

我不知道如何在O(n * logn)时间内找到它。我理解用于查找一组间隔的刺穿集的贪婪算法,但是找到严格O(n * log n)时间的终点似乎非常不同。

我可以尝试先对间隔进行排序,然后强制使用最大深度终点,但这并不能保证O(n * log n)时间。

1 个答案:

答案 0 :(得分:2)

您可以尝试以下操作:

  • 对您的点a_i和b_i(在一个数组中一起)进行排序
  • 遍历排序的数组会在遇到“a”点(开始一个间隔)时增加一个计数器(深度),并在“b”点(间隔结束)时减少它 - 在这里你可以找到你的“b”点最大深度