对循环/定期间隔进行排序

时间:2018-05-07 18:56:10

标签: algorithm sorting intervals

我需要找到区间交叉点的最大数量,即对于[1,6],[2,5],[5,10],[12,17],最大交点数为5,即3。

现在这很容易做到只是将数字标记为间隔的开始/结束并对它们进行排序(如果有利于开始数字)然后遍历排序的数组并跟踪开始和结束的数量,以及最大的区别这两者之间是最大的。

在示例中阵列将是(1求,2求,5求,5结束,6结束,10结束,12结束,17结束)

在5处有3个开始和0个结束。

现在我的问题是我的间隔是圆形/周期性的,例如,如果间隔包含在[0,1]中,那么1等于0(如走完整圆并返回到同一点)间隔[0.7 ,0.3]可以想象为[0.7,1]和[0,0.3]的联合,因此它与[0.3,0.7]不同。

该方法失败,因为例如第一个数字可能是结束号码。

1 个答案:

答案 0 :(得分:1)

您可以计算此类特殊区间的数量(即那些起始值大于其结束值的区间),并将此数字作为起始数(而不是零)的初始值。

现在,您可以像处理算法中的任何其他区间一样处理特殊区间,并找到正确的答案。