leetcode 3102.最小化曼哈顿距离

题目描述

原题链接:3102.最小化曼哈顿距离

解题思路

1.暴力

枚举去掉每一个点的情况,然后计算出点与点之间的距离,从中取最大值为去掉改点的最大距离,计算出每个点的情况之后再取出当中的最小值作为本题的答案。

时间复杂度: o ( n 3 ) o(n^3) o(n3)
2.巧用曼哈顿距离和切比雪夫距离的关系

在这里插入图片描述

如图所示,假设我们有两个点,分别是 ( 0 , 1 ) (0,1) (0,1) ( 1 , 3 ) (1,3) (1,3)。将其坐标轴扩大 2 \sqrt2 2 倍,之后再将其逆时针旋转 4 5 ∘ 45^{\circ} 45得到 ( 1 , 1 ) (1,1) (1,1) ( 4 , 2 ) (4,2) (4,2)。我们分别将原来x轴的差和y轴的差投影到现在的x’轴上。由于投影之后线段的长度会缩小 2 \sqrt2 2 倍,而我们上面的操作又先扩大 2 \sqrt2 2 倍,所以投影的长度就等于原来的曼哈顿距离
为了得到投影之后的x’和y’与原来的x和y之间的关系,我们可以用一个投影矩阵来对其进行变换。查阅资料可知,将一个坐标系逆时针旋转 θ \theta θ的变换矩阵如下所示:

[ cos ⁡ ( θ ) − sin ⁡ ( θ ) sin ⁡ ( θ ) cos ⁡ ( θ ) ] \begin{bmatrix} \cos(\theta) & -\sin(\theta)\\ \\\sin(\theta) &\cos(\theta) \end{bmatrix} cos(θ)sin(θ)sin(θ)cos(θ)

转换前后坐标的关系是:
[ x ′ y ′ ] = [ cos ⁡ ( θ ) − sin ⁡ ( θ ) sin ⁡ ( θ ) cos ⁡ ( θ ) ] [ x y ] \begin{bmatrix} x' \\ \\y' \end{bmatrix} =\begin{bmatrix} \cos(\theta) & -\sin(\theta)\\ \\\sin(\theta) &\cos(\theta) \end{bmatrix} \begin{bmatrix} x \\ \\y \end{bmatrix} xy =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值