本文最后更新于 197 天前,如有失效请评论区留言。
曼哈顿距离
应该是我们熟知的距离计算方式,两个单元格 (xi, yi) 和 (xj, yj) 之间的曼哈顿距离为 |xi – xj| + |yi – yj|。但他的绝对值经常干扰我们计算,我们可以把它转换成切比雪夫距离
,具体原理可以看曼哈顿距离与切比雪夫距离的相互转化,结论就是:曼哈顿距离在坐标轴旋转 45 度后与切比雪夫距离等价。其中通过转轴公式,也可以知道(x, y)转动45度角后坐标为(x + y, y – x)
https://leetcode.cn/problems/minimize-manhattan-distances/description/
class Solution:
def minimumDistance(self, points: List[List[int]]) -> int:
from sortedcontainers import SortedList
sx = SortedList(x + y for x, y in points)
sy = SortedList(y - x for x, y in points)
ans = inf
for x, y in points:
nx, ny = x + y, y -x
sx.remove(nx)
sy.remove(ny)
ans = min(ans, max(sx[-1] - sx[0], sy[-1] - sy[0]))
sx.add(nx)
sy.add(ny)
return ans