给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
思路
顺时针循环扫描可以将每个循环分为四个阶段
1. 在第一行 从第一列扫描至最后一列
2. 在最后一列 从 第二行扫描到最后一行
3. 在最后一行 从 倒数第二列 扫描到 第一列
4. 在第一列 从 倒数第二行 扫描的 第二行
使用两个参数col row 来作为工作指针进行扫描。Sc、Sr用来表示行列的起始行列数,Ec、Er用来表示行列扫描的结束行列数。每次循环结束时,对着四个参数进行更新。
注意:
1. 循环需要满足 第一行起始行列数需要小于等于结束行列数。
2. 在每个循环的第一个阶段完成之后 需要判断当前矩阵是否已经只有一行,如果只有一行则没必要进行下面的步骤,直接break。
3. 在每个循环的第二阶段完成之后 需要判断 当前矩阵是否已经只有一列,如果只有一列则没必要进行下面的步骤,直接break。(如果进行了下面的步骤,会对元素重复扫描)
4. 每个阶段进行扫描时需要对col row 进行初始化
代码
import java.util.ArrayList;
import java.util.List;
public class Spiral_Matrix_54 {
/**
* @return java.util.List<java.lang.Integer>
* @author chy
* @creed: Talk is cheap,show me the code
* @date 27/5/2019 8:31 PM
* @desc: 54 给定一个包含 m x n 个元素的矩