【发布时间】:2016-08-04 01:39:24
【问题描述】:
面试题:
给定数十亿个矩形,找到与给定点 P(x,y) 重叠面积最小的矩形
有一种简单的方法可以在 O(n) 时间内通过顺序处理每个矩形来获得答案,但进一步优化它提供了大量的 Rectangle 数组。
我最好的方法是检查每个矩形,看看点是否在里面,然后计算面积并与当前的最小面积进行比较。这可以一次性完成。我无法想象任何其他不需要检查所有矩形的方法
【问题讨论】:
面试题:
给定数十亿个矩形,找到与给定点 P(x,y) 重叠面积最小的矩形
有一种简单的方法可以在 O(n) 时间内通过顺序处理每个矩形来获得答案,但进一步优化它提供了大量的 Rectangle 数组。
我最好的方法是检查每个矩形,看看点是否在里面,然后计算面积并与当前的最小面积进行比较。这可以一次性完成。我无法想象任何其他不需要检查所有矩形的方法
【问题讨论】:
很可能您没有说出完整的问题。因为按照现在的方式,您的解决方案是最佳的。
不管是什么,你都必须通过每个矩形至少一个来检查它是否真的覆盖了这个点并计算它的面积。没有必要以任何方式对它们进行预处理,因为您只需要回答一个问题。
只有在您将来需要回答许多类似问题时,预处理才有意义。
【讨论】:
如果您使用具有许多点查询的相同矩形集,那么R-tree 数据结构允许知道哪些矩形包含给定点,而无需检查所有矩形
【讨论】: