【问题标题】:Find point inside smallest rectangle. O(n) but optimize further找到最小矩形内的点。 O(n) 但进一步优化
【发布时间】:2016-08-04 01:39:24
【问题描述】:

面试题:

给定数十亿个矩形,找到与给定点 P(x,y) 重叠面积最小的矩形

有一种简单的方法可以在 O(n) 时间内通过顺序处理每个矩形来获得答案,但进一步优化它提供了大量的 Rectangle 数组。

我最好的方法是检查每个矩形,看看点是否在里面,然后计算面积并与当前的最小面积进行比较。这可以一次性完成。我无法想象任何其他不需要检查所有矩形的方法

【问题讨论】:

    标签: algorithm time-complexity


    【解决方案1】:

    很可能您没有说出完整的问题。因为按照现在的方式,您的解决方案是最佳的。

    不管是什么,你都必须通过每个矩形至少一个来检查它是否真的覆盖了这个点并计算它的面积。没有必要以任何方式对它们进行预处理,因为您只需要回答一个问题

    只有在您将来需要回答许多类似问题时,预处理才有意义。

    【讨论】:

    • 我完全同意。然而,我认为面试官会期望一个人想到一个适用于许多查询的解决方案。我认为他们希望人们可以看到代价高昂的预处理传递的交易,这将使所有后续查询 LogN 或小于 O(n)。所以我认为最好的答案是说“仅对于一次搜索,O(n) 是我们能做的最好的。对于多个查询,使用 k-tree 或其他一些数据结构是值得的”
    【解决方案2】:

    如果您使用具有许多点查询的相同矩形集,那么R-tree 数据结构允许知道哪些矩形包含给定点,而无需检查所有矩形

    【讨论】:

      【解决方案3】:

      当然,您确实需要至少处理一次所有矩形。但是明智地使用第一次,你可以在以后获得多个更快的查找。

      我会将矩形插入K-d treeQuadtree

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-18
        • 2013-02-23
        相关资源
        最近更新 更多