Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 求一组间隔的最大深度_Algorithm_Computational Geometry_Intervals_Greedy - Fatal编程技术网

Algorithm 求一组间隔的最大深度

Algorithm 求一组间隔的最大深度,algorithm,computational-geometry,intervals,greedy,Algorithm,Computational Geometry,Intervals,Greedy,给定一组区间I,[a_I,b_I]形式的每个元素在O(n*logn)时间内找到最大深度的终点b_I。将x的深度定义为点“刺”(或相交)的间隔数。如果两个端点具有相同的深度,则返回较小的端点 尝试: 我不知道如何在O(n*logn)时间内找到它。我理解贪心算法寻找一组区间的刺集,但是找到一个严格O(n*logn)时间的端点似乎非常不同 我可以尝试首先对间隔进行排序,并强制执行最大深度端点,但这不能保证O(n*logn)时间 您可以尝试以下操作: 对点a_i和b_i进行排序(一起在一个数组中)

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


尝试:

我不知道如何在O(n*logn)时间内找到它。我理解贪心算法寻找一组区间的刺集,但是找到一个严格O(n*logn)时间的端点似乎非常不同


我可以尝试首先对间隔进行排序,并强制执行最大深度端点,但这不能保证O(n*logn)时间

您可以尝试以下操作:

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

正确,但如果“a”与“b”具有相同的值,则必须小心将其排序在“a”之前。例如:[0,1],[1,2]--最大深度为2,这意味着您必须将数字排序为[a0,a1,b1,b2],而不是[a0,b1,a1,b2]。