我必须制定一种有效的算法,以得到彼此最远的两个点,而我正在尝试获取O(nlogn)复杂度。我搜索了一种有效的算法,但我只能找到最接近的点。
输出应该只打印两个点。
我现在发现的是来自GeeksForGeeks的算法:https://www.geeksforgeeks.org/closest-pair-of-points-using-divide-and-conquer-algorithm/但用于最接近的点。
以及此解决方案:
mukeshiiitm.wordpress.com/2008/05/27/find-the-farthest-pair-of-points /
看起来很复杂的作业。
第一种方法,看起来很奇怪,再加上我认为它不适用于我的问题。
任何帮助将不胜感激。
嗯,这是家庭作业,所以没有代码示例:)
这里是O(n log n)方法:
使用O(n log n)凸包算法中的任何一个找到所有给定点的Convex Hull
现在我们可以注意到,最远的两个点仍将位于凸包上
我们可以在O(n)时间内使用Rotating calipers技术找到这些点