解题思路
和acwing那道蛇形矩阵的思路是类似的。
相关代码
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int dx[] = {0,1,0,-1};
int dy[] = {1,0,-1,0};
int m = matrix.length;
int n = matrix[0].length;
int k=0;
boolean st[][] = new boolean[matrix.length][matrix[0].length];
List<Integer> res = new ArrayList<>();
for(int i=1,x=0,y=0;i<=m*n;i++){
res.add(matrix[x][y]);
st[x][y]=true;
int a1 = x+dx[k%4];
int b1 = y+dy[k%4];
if(a1<0||a1>=m||b1<0||b1>=n||st[a1][b1]==true){
k=(k+1)%4;
a1 = x+dx[k];
b1 = y+dy[k];
}
x = a1;
y = b1;
}
return res;
}
}