54. 螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
解析
我们只需要记住固定的写法就好了,按照 右->下->左->上 的顺序去访问
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int[][] direction = new int[][]{{0,1},{1,0},{0,-1},{-1,0}};
List<Integer> res = new ArrayList<>();
if(matrix==null||matrix.length==0||matrix[0].length==0) return res;
int m = matrix.length,n = matrix[0].length,x= 0,y = -1,index = 0;
int[][] flag = new int[m][n];
while(res.size()<m*n){
while(true){
x+=direction[index][0];
y+=direction[index][1];
res.add(matrix[x][y]);
flag[x][y] = 1;
int tx = x+direction[index][0];
int ty = y+direction[index][1];
if(tx<0||ty<0||tx==m||ty==n||flag[tx][ty]==1) break;
}
index = (index+1)%4;
}
return res;
}
}
注意:本文归作者所有,未经作者允许,不得转载