【发布时间】:2012-02-08 22:12:18
【问题描述】:
首先让我说出正确的问题:
问:有一个文件包含超过一百万个点 (x,y),每个点代表一颗星。在 (a,b) 有一个行星地球。现在,任务是构建一个算法,将 100 颗最近的恒星送回地球。你的算法的时间和空间复杂度是多少。
这个问题在各种采访中被问过很多次。我尝试查找答案,但找不到满意的答案。
一种方法,我认为可能是使用大小为 100 的最大堆。计算每颗星的距离并检查距离是否小于最大堆的根。如果是,将其替换为 root 并调用 heapify。
还有其他更好/更快的答案吗?
P.S:这不是作业题。
【问题讨论】:
-
是的,可惜。这是一个有趣的问题,但已经在这里回答了。
-
@missingno:有点类似,但是我上面提供的解决方案可以很容易地解决这个问题。在这里,需要一些额外的计算,我想知道是否有办法将它们最小化。
标签: algorithm