小编典典

给定一组间隔,找到具有最大交点数的间隔

algorithm

给定一组间隔,找到具有最大交叉点数量(而不是特定交叉点的长度)的间隔。因此,如果输入(1,6)(2,3)(4,11),则应返回(1,6)。有人建议使用间隔树在O(nlogn)中完成此操作,但是在阅读其维基页面后,我不了解如何构造和使用间隔树。我相信可以通过执行某种排序和扫描算法来完成。如果“间隔树”是唯一的选择,请教我如何构造/使用一个树。谢谢。


阅读 209

收藏
2020-07-28

共1个答案

小编典典

注意:David Eisenstat的算法比该算法具有更好的性能。

一个简单的平面扫描算法将在中执行此操作O(nlogn + m*n),其中m是任何单个间隔的最大相交数。

对时间间隔端点进行排序。跟踪活动段。到达起点时,增加所有活动间隔的相交计数,并将新间隔的相交计数设置为活动间隔的数量(不包括其自身)。到达终点时,从活动间隔中删除该间隔。

2020-07-28