思路:
// @Title: 螺旋遍历二维数组 (螺旋遍历二维数组)
// @Author: qisiii
// @Date: 2022-02-21 10:35:20
// @Runtime: 4 ms
// @Memory: 43.2 MB
// @comment:
// @flag:
class Solution {
public static int[] spiralOrder(int[][] matrix) {
if(matrix==null||matrix.length==0||matrix[0].length==0){
return new int[0];
}
int x=0,y=0;
//是否访问过
boolean[][] visited=new boolean[matrix.length][matrix[0].length];
//行动坐标
int[][] action={{0,1},{1,0},{0,-1},{-1,0}};
int[] result=new int[matrix.length*matrix[0].length];
int count=0;
int dong=0;
while(count<matrix.length*matrix[0].length){
result[count++]=matrix[x][y];
visited[x][y]=true;
int nextX=x+action[dong][0];int nextY=y+action[dong][1];
if(nextX<0||nextX>=matrix.length||nextY<0||nextY>=matrix[0].length||visited[nextX][nextY]){
dong=(dong+1)%4;
}
x=x+action[dong][0];
y=y+action[dong][1];
}
return result;
}
}