给定一个具有N个定义点的圆和圆外的点M,找到N.O(LogN)集合中最接近M的点

yuv*_*uvi 5 algorithm geometry

http://www.glassdoor.com/Interview/Google-Interview-RVW2382108.htm

我试图找到解决这个问题的方法.但我还没有成功..任何人都可以给我一个关于如何处理这个问题的提示.

我将分别拿2对两分.也就是说,我将制作2个和弦.找出他们的垂直平分线.使用这些平分线,我会发现圆圈的中心......

而且,我会想出圆圈的等式.并找到点M与圆的交点......那应该是最近点.但是,该点可能存在也可能不存在于N点的集合中

谢谢.

Dar*_*rda 5

假设圆周上的点是"有序"(即按圆圈中心的角度排序),您可以使用基于角度的二分搜索,它应该达到O(log(n))界限.

  1. 计算AM圆点到圆心的角度- O(1).
  2. 使用二分搜索I在圆周上找到最大角度小于A- 的点O(log(n)).
  3. 由于圆是凸的,因此最接近的点MI或者I+1.计算两者的距离并取最小值 - O(1).