我需要得到两个距离最远的点。
最简单的方法是计算每个方法之间的距离,但该方案具有二次复杂度。
所以我正在寻找更快的解决方案。
答案 0 :(得分:4)
怎么样:
1确定该组点的凸包 2找到船体上各点之间的最长距离。
这应该允许你在检查距离时忽略船体上没有的所有点。
答案 1 :(得分:2)
详细阐述rossom的答案:
第2部分和第3部分采用摊销的O(n)时间,因此整个算法需要O(n log n)或O(n log h)时间,具体取决于您在实施凸包时需要花费多少时间。< / p>
这很好,除非你只有几千点(就像你说的那样),O(n ^ 2)应该可以正常工作(除非你多次执行)。