import java.util.ArrayList; //全网最垃圾代码 public class Solution { boolean[][] is_pass; ArrayList list = new ArrayList<>(); public ArrayList printMatrix(int [][] matrix) { if(matrix==null) return list; if(matrix.length==0 || matrix[0].length==0) return list;
is_pass = new boolean[matrix.length][matrix[0].length];
for(int i = 0;i < is_pass.length;i++) {
for(int j = 0;j < is_pass[i].length;j++) {
is_pass[i][j] = false;
}
}
to_right(matrix,0,0);
return list;
}
private void to_right(int[][] matrix,int x,int y) {
if(y>matrix[0].length-1 || is_pass[x][y]) {
if(x+1>matrix.length-1 || is_pass[x+1][y-1]) return;
to_down(matrix,x+1,y-1);
}else {
list.add(matrix[x][y]);
is_pass[x][y] = true;
to_right(matrix,x,y+1);
}
}
private void to_down(int[][] matrix,int x,int y) {
if(x>matrix.length-1 || is_pass[x][y]) {
if(y-1<0 || is_pass[x-1][y-1]) return;
to_left(matrix,x-1,y-1);
}else {
list.add(matrix[x][y]);
is_pass[x][y] = true;
to_down(matrix,x+1,y);
}
}
private void to_left(int[][] matrix,int x,int y) {
if(y<0 || is_pass[x][y]) {
if(x-1<0 || is_pass[x-1][y+1]) return;
to_up(matrix,x-1,y+1);
}else {
list.add(matrix[x][y]);
is_pass[x][y] = true;
to_left(matrix,x,y-1);
}
}
private void to_up(int[][] matrix,int x,int y) {
if(x<0 || is_pass[x][y]) {
if(y+1>matrix[0].length-1 || is_pass[x+1][y+1]) return;
to_right(matrix,x+1,y+1);
}else {
list.add(matrix[x][y]);
is_pass[x][y] = true;
to_up(matrix,x-1,y);
}
}
}