【算法题解析】在网格中从任意点开始按顺时针螺旋遍历所有格子
题目描述
给定一个大小为 rows x cols
的二维网格,网格的左上角为 (0, 0)
,右下角为 (rows-1, cols-1)
。你从网格中任意一个起点 (rStart, cStart)
出发,初始方向朝东(右),要求你按顺时针方向按螺旋轨迹遍历这个网格,访问网格中的所有位置。
需要注意的是,遍历时允许走出网格边界,继续沿螺旋轨迹行走,直到所有网格内的点都被访问到。
最终返回一个列表,表示访问网格的顺序,列表中每个元素是 [row, col]
。
解题分析
这道题本质是让我们实现一个从任意起点开始、按顺时针方向、以螺旋方式遍历二维网格的路径。
关键点:
- 起点和方向:初始位置任意
(rStart, cStart)
,初始方向固定为“东”。 - 顺时针螺旋遍历:方向顺序是东 → 南 → 西 → 北,然后循环。
- 允许走出边界:当轨迹走到边界外时,仍然继续走螺旋路径,不访问超出范围的点,但可能回头访问之前未访问过的网格。
- 访问所有格子:直到遍历了网格内所有
rows * cols
个格子。