1.题目描述:给你一个 m
行 n
列的矩阵 matrix
,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素
2.运行示例:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]
3.解题思路
题意要求我们螺旋向内遍历矩阵,需要考虑以下几个问题:
3.1. 起始位置
3.2. 移动方向
3.3. 边界
3.4. 结束条件
3.1. 起始位置
螺旋矩阵的遍历起点是矩阵的左上角,也就是 (0, 0) 位置。
3.2. 移动方向
起始位置的下一个移动方向是向右。在遍历的过程中,移动方向是固定的:
右 → ,下↓,左←,上↑
右→,下↓,左←,上↑
移动方向是按照上面的顺序循环进行的。每次当移动到了边界,才会更改方向。但边界并不是固定的,请看下面分析。
3.3. 边界
本题的边界是最大的难点,因为是随着遍历的过程而变化的。螺旋遍历的时候,已经遍历的数字不能再次遍历,所以边界会越来越小。
规则是:如果当前行(列)遍历结束之后