【问题标题】:Find the maximum depth of a set of intervals找出一组区间的最大深度
【发布时间】:2017-10-06 22:22:46
【问题描述】:

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


尝试:

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

我可以尝试首先对间隔进行排序并蛮力设置最大深度端点,但这并不能保证 O(n * log n) 时间。

【问题讨论】:

    标签: algorithm computational-geometry intervals greedy


    【解决方案1】:

    您可以尝试以下方法:

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

    【讨论】:

    • 正确,但是如果它们具有相同的值,您必须小心将“a”排在“b”之前。例如: [0, 1], [1, 2] -- 最大深度为 2,这意味着您必须将数字排序为 [a0, a1, b1, b2] 而不是 [a0, b1, a1, b2 ].
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 1970-01-01
    相关资源
    最近更新 更多