题解如代码:
public ArrayList<Integer> printMatrix(int [][] matrix) {
int[] dx = {0,1,0,-1};
int[] dy = {1,0,-1,0};
int i =0,j=0;
int rows = matrix.length;
int cols = matrix[0].length;
boolean[][] visited = new boolean[rows][cols];
int max = matrix.length * matrix[0].length;
ArrayList<Integer> list = new ArrayList<>();
for(int k = 0,d =0;k < max;k++){
//转向
list.add(matrix[i][j]);
visited[i][j] = true;
int nextI = i + dx[d];
int nextJ = j + dy[d];
if(nextI<0 || nextI>=rows || nextJ<0 || nextJ>=cols || visited[nextI][nextJ]){
d = (d+1)%4;
}
i = i + dx[d];
j = j + dy[d];
}
return list;
}
京公网安备 11010502036488号