🔗 题目信息
- 题目链接:874. Walking Robot Simulation
- 难度:中等
- 核心考点:方向控制 + 哈希优化 + 模拟
💡 核心思路
本题本质是一个网格模拟问题:
机器人从原点 $(0,0)$ 出发,初始朝北(上),根据指令进行移动或转向,同时要避开障碍物。
🧠 指令解析
-2:左转 90°-1:右转 90°1 ~ 9:向当前方向前进对应步数
🚀 解题关键
1️⃣ 方向表示(核心技巧)
用数组表示方向(非常经典):
|
|
用向量表示:
|
|
👉 当前方向用 d 表示:
- 左转:
d = (d + 3) % 4 - 右转:
d = (d + 1) % 4
2️⃣ 障碍物优化(重点)
👉 必须用 set!否则会超时
把障碍物转成哈希集合:
|
|
👉 查询是否有障碍:O(1)
3️⃣ 一步一步走(避免“穿墙”)
⚠️ 不能一次跳 k 步!
必须这样:
|
|
4️⃣ 记录最大距离
题目要求:
|
|
👉 即:
$$x^2 + y^2$$🐍 Python 工程实现
|
|
⚡ 复杂度分析
-
时间复杂度:$O(n + k)$
- $n$ 为指令数量
- $k$ 为总移动步数(最多 9n)
-
空间复杂度:$O(m)$
- $m$ 为障碍物数量
🧩 易错点总结
❌ 一次走 k 步(会穿过障碍)
✔ 必须逐步模拟
❌ 用 list 查障碍(超时) ✔ 用 set
❌ 忘记更新最大距离 ✔ 每一步都更新
🧠 一句话总结
👉 方向数组 + 哈希集合 + 逐步模拟 = 本题最优解