我想知道这个问题的最佳算法是什么?给定一组点,确定它们是否沿着与y轴平行的线形成镜像。例如。给定(1,3) (3,3) (5,3) (7,3) (0,7) (8,7) (-1,4) (9,4)
,它们沿着x = 4
(1,3) | (7,3)
(3,3) | (5,3)
(0,7) | (8,7)
(-1,4)| (9,4)
我认为最好的方法是将点放在HashMap中,其中键为y
坐标,值为x
坐标。遍历键集并确保每个键具有偶数个值并且还取其平均值。所有的平均值应该相同吗?
答案 0 :(得分:3)
我会这样做:
示例Python实现:
current = TestCameraFragment.newInstance(false);
答案 1 :(得分:0)
除非镜像线上的一个点被认为是自身的镜像,否则如果点数是奇数,则没有镜像线。
方法1:迭代这些点并将它们的x值相加。完成迭代后,将总和除以点数。这是你潜在镜像线的x。我们称之为x mirror 。
方法2:从所有点中查找x min 和x max 值。平均x min 和x max ,这是你潜在的镜像线。
从最左边的点开始,每个(x i ,y i ):
您必须仅为 n / 2 点执行此操作。