Spiral Matrix by leetcode
java编写
class Solution {
static int x=0;
static int y=0;
public static List spiralOrder(int[][] matrix) {
List list = new ArrayList<>();
if(matrix.length == 0){
return new ArrayList<>();
}
boolean[][] pan = new boolean[matrix.length][matrix[0].length];
dfs1(pan, list, matrix, x, y);
return list;
}
public static void dfs1(boolean[][] pan,List<Integer> list,int[][] matrix,int x,int y) {
if(x==-1||x==matrix.length||y==-1||y==matrix[0].length) {
return;
}
if(pan[x][y]==false) {
pan[x][y]=true;
list.add(matrix[x][y]);
dfs1(pan, list, matrix, x, y+1);
dfs1(pan, list, matrix, x+1, y);
dfs1(pan, list, matrix, x, y-1);
dfs2(pan, list, matrix, x-1, y);
}else {
return;
}
}
public static void dfs2(boolean[][] pan,List<Integer> list,int[][] matrix,int x,int y) {
if(x==-1||x==matrix.length||y==-1||y==matrix[0].length) {
return;
}
if(pan[x][y]==false) {
pan[x][y]=true;
list.add(matrix[x][y]);
dfs2(pan, list, matrix, x-1, y);
dfs1(pan, list, matrix, x, y+1);
}else {
return;
}
}
}
8说了,我自己写的标准答案,这也太秀了吧,只用了0ms,啊啊啊啊啊,太激动了,我竟然也可以写出这么牛逼的代码hhhh。