我们可以按照递归的思路来进行,每次打印矩阵的外圈,然后剩下的内部的小矩阵重复这个过程。
ArrayList<Integer> res = new ArrayList<>();
int[][] Matrix;
public ArrayList<Integer> printMatrix(int [][] matrix) {
Matrix = matrix;
int row = matrix.length;
if(row == 0)
return res;
int col = matrix[0].length;
helper(0,0,row-1,col-1);
return res;
}
private void helper(int i1,int j1,int i2,int j2)
{
if(i2 < i1 || j2 < j1)
return;
for(int i = j1;i <= j2;i++)
res.add(Matrix[i1][i]);
for(int i = i1+1;i <= i2-1;i++)
res.add(Matrix[i][j2]);
if(i2 != i1)
for(int i = j2;i >= j1;i--)
res.add(Matrix[i2][i]);
for(int i = i2-1;i >= i1+1;i--)
res.add(Matrix[i][j1]);
helper(i1+1,j1+1,i2-1,j2-1);
}
京公网安备 11010502036488号