找到最小矩形内的点。 O(n)但进一步优化

时间:2016-04-13 06:26:52

标签: algorithm time-complexity

面试问题:

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

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

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

3 个答案:

答案 0 :(得分:2)

如果您使用具有多个点查询的相同矩形集,则R-tree数据结构允许在不检查所有矩形的情况下知道哪些矩形包含给定点

答案 1 :(得分:1)

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

我会将矩形插入K-d treeQuadtree

答案 2 :(得分:1)

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

无论您需要通过每个矩形至少一个,检查它是否实际覆盖了该点并计算其面积。没有必要以任何方式对它们进行预处理,因为您需要回答只有一个问题

如果您将来需要回答许多类似的问题,预处理才有意义。