这是在一位 friend 谈论编程竞赛时出现的,我们想知道最好的方法是什么:
给定一个点列表,找到包含最多点的预定大小圆的中心。如果有多个这样的圆圈,找到其中一个很重要。
示例输入:1000 个点,在一个 500x500 的空间中,一个直径为 60 的圆。
最佳答案
除非我遗漏了一些明显的东西,否则我认为答案很简单。
对于一个矩形区域MxN,点数P,半径R:
- 将 MxN 区域的映射(例如 2D 数组)初始化为全零
- 对于你的每一个P点
- 将半径 R 内的所有 map 点增加 1
- 找到具有最大值的 map 元素 - 这将是您正在寻找的圆的中心
这是 O(P),假设 P 是感兴趣的变量。
关于algorithm - 找到包含在固定大小的圆圈中的最多点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2151162/