如何找到坐标以在线性时间内最小化曼哈顿距离?

How to find coordinate to minimise Manhattan distance in linear time?

我需要从点列表中找到最小化曼哈顿距离总和的点。 所以给定一个列表可以说 [[x0, y0], [x1, y1] ...] (未排序)我必须找到最小化曼哈顿与该点列表的距离的点。我理解这个问题,但我无法在 O(n) 时间内完成此问题。

您可以在线性时间内找到一列数字的中位数。

分别取 x-coordinates 和 y-coordinates,求每个的中位数。如果您需要整数坐标,请将 half-values 舍入到最接近的整数。

距离最小化点 (DMP) 是([=21= 的中值],y-values 的中值)。可能有多个 DMP,但这将是其中之一。

为什么?好吧,沿着任一轴,如果一个方向上的点比另一个方向多,比如左边的 p 和右边的 q,p < q,那么向右移动 1 将使到 p 点的距离增加 1,并减少到 q 个点的距离减 1,因此将曼哈顿到点的距离之和减少 q-p。