题目描述
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例 1:
1 | 输入: |
示例 2:
1 | 输入: |
题解
模拟法
算法
- 根据题目说明,按顺时针方向遍历矩阵。
- 设定几个变量: col, row 为当前坐标,dCol, dRow 为遍历方向,colL, colR 为横向坐标遍历范围,rowT, rowB 为纵向坐标遍历范围。
- 从左上角 (col, row) = (0, 0) 开始,设定遍历方向为向右 (dCol, dRow) = (1, 0) ,遍历到最右 colR,因为这一行已经遍历过,所以修改纵坐标范围 rowT++ 。
- 改变方向向下 (dCol, dRow) = (0, 1),遍历到最下 rowB ,修改横坐标范围 colR—。
- 改变方向向左 (dCol, dRow) = (-1, 0) ,遍历到最左 colL ,修改纵坐标范围 rowB—。
- 改变方向向上 (dCol, dRow) = (0, 1) ,遍历到最上 rowT ,修改横坐标范围 colL++。
- 已经遍历到 (col, row) = (1, 1) ,重复第2步,直到遍历完成。
代码
1 | // C++ |