Algorithm 求一组间隔的最大深度
给定一组区间I,[a_I,b_I]形式的每个元素在O(n*logn)时间内找到最大深度的终点b_I。将x的深度定义为点“刺”(或相交)的间隔数。如果两个端点具有相同的深度,则返回较小的端点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进行排序(一起在一个数组中)
尝试: 我不知道如何在O(n*logn)时间内找到它。我理解贪心算法寻找一组区间的刺集,但是找到一个严格O(n*logn)时间的端点似乎非常不同
我可以尝试首先对间隔进行排序,并强制执行最大深度端点,但这不能保证O(n*logn)时间 您可以尝试以下操作:
- 对点a_i和b_i进行排序(一起在一个数组中)
- 遍历排序数组时,当遇到“a”点(开始一个间隔)时,增加一个计数器(深度),当遇到“b”点(间隔结束)时,减少计数器(深度)-在这里可以找到深度最大的“b”点