news 2026/7/18 10:49:25

DeepSeek LeetCode 3609. 到达目标点的最小移动次数 Python3实现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DeepSeek LeetCode 3609. 到达目标点的最小移动次数 Python3实现

```python
class Solution:
def minMoves(self, sx: int, sy: int, tx: int, ty: int) -> int:
ans = 0

# 从终点向起点逆向推导
while tx > sx or ty > sy:
# 如果逆向过程中某个坐标小于起点,说明不可能到达
if tx < sx or ty < sy:
return -1

ans += 1

# 处理两个坐标相等的情况
if tx == ty:
# 只有当起始点有一个坐标为0时,才能从(0,k)或(k,0)到达(k,k)
if sx == 0:
tx = 0
elif sy == 0:
ty = 0
else:
return -1
continue

# 保证 tx > ty,便于统一处理
if tx < ty:
tx, ty = ty, tx
sx, sy = sy, sx

# 核心逆向逻辑
if tx > ty * 2:
# 如果 tx 远大于 ty,上一步只能是翻倍操作
if tx % 2 != 0:
return -1
tx //= 2
else:
# 否则上一步是加法操作,减去较小的那个数
tx -= ty

return ans if tx == sx and ty == sy else -1
```

核心思路:逆向思维 + 贪心

这道题正着推导很难,因为每次都有两种选择。但从终点向起点反向推导就会变得非常清晰:

1. 逆向操作的确定性

· 正向操作:(x, y) → (x+y, y) 或 (x, x+y)
· 逆向操作:如果 tx > ty,最后一步只能是:
· 翻倍:(tx//2, ty)(前提是 tx 为偶数,且 tx//2 != ty,但这里直接减半即可)
· 加法:(tx-ty, ty)

2. 贪心优化
当 tx > ty * 2 时,tx 远大于 ty,此时最后一步不可能是加法(因为加法只会增加 ty,不可能让 tx 变得这么大),所以一定是翻倍操作,直接让 tx 减半。
其他情况则用减法还原。

3. 特殊情况处理

· tx == ty 时,只能从 (0, k) 或 (k, 0) 到达,否则无解
· 逆向过程中如果 tx < sx 或 ty < sy,说明走过头了,返回 -1

4. 坐标交换
为了统一处理,始终保证 tx > ty,如果 tx < ty 就交换两个坐标(同时交换起点坐标)。

时间复杂度

O(log(max(tx, ty))),每次循环都会将较大的数大幅缩小(减半或减去较小数),效率极高。

示例验证

```python
sol = Solution()
print(sol.minMoves(1, 1, 3, 5)) # 输出: 4
print(sol.minMoves(1, 1, 2, 2)) # 输出: 3
print(sol.minMoves(2, 1, 3, 7)) # 输出: -1
```

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 10:49:24

国内外组态软件哪家好?组态软件对比分析

国产组态软件&#xff1a;自主化与技术创新紫金桥跨平台监控组态软件作为国内纯国产跨平台组态软件&#xff0c;紫金桥基于Qt框架实现了操作系统与芯片架构的双重突破。它不仅支持Windows、麒麟、统信及RedHat等主流Linux系统&#xff0c;更兼容龙芯、ARM、飞腾等国产处理器&am…

作者头像 李华
网站建设 2026/7/18 10:49:09

Moonlight PC历史版本回顾:经典Java客户端的发展与功能演进

Moonlight PC历史版本回顾&#xff1a;经典Java客户端的发展与功能演进 【免费下载链接】moonlight-pc Java GameStream client for PC (Discontinued in favor of Moonlight Qt) 项目地址: https://gitcode.com/gh_mirrors/mo/moonlight-pc Moonlight PC是一款基于Java…

作者头像 李华
网站建设 2026/7/18 10:48:50

Tachometer 配置文件详解:JSON 配置的 15 个关键参数解析

Tachometer 配置文件详解&#xff1a;JSON 配置的 15 个关键参数解析 【免费下载链接】tachometer Statistically rigorous benchmark runner for the web 项目地址: https://gitcode.com/gh_mirrors/ta/tachometer Tachometer 是一个用于在 Web 浏览器中运行基准测试的…

作者头像 李华
网站建设 2026/7/18 10:48:40

【信息科学与工程学】【数据中心】第十九篇 轨道交通云01

城市级 / 省级 / 国家级轨道交通云 – 监控与应急数据上报部委对比表 层级 管辖范围 Region/AZ 典型配置 监控数据种类(来源) 应急数据类型(来源) 上报的国家部委 数据流路径与技术手段 关键技术 合规与法律依据 城市级​ 单城市地铁线网(如深圳地铁) 单 Regi…

作者头像 李华
网站建设 2026/7/18 10:48:11

Inkling-mlx-4bit性能测试报告:M2 Ultra上的速度与质量平衡艺术

Inkling-mlx-4bit性能测试报告&#xff1a;M2 Ultra上的速度与质量平衡艺术 【免费下载链接】Inkling-mlx-4bit 项目地址: https://ai.gitcode.com/hf_mirrors/mlx-community/Inkling-mlx-4bit Inkling-mlx-4bit是基于Thinking Machines Inkling模型的MLX 4-bit量化版本…

作者头像 李华