Spiral Matrix II by Leetcode
java编写
class Solution {
static int x=0;
static int y=0;
static int i=0;
public int[][] generateMatrix(int n) {
int [][]a = new int[n][n];
if(n==1){
a[0][0]=1;
return a;
}
boolean[][] pan = new boolean[n][n];
dfs1(pan, a, x, y);
i=0;
return a;
}
public void dfs1(boolean[][] pan,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;
i++;
matrix[x][y]=i;
dfs1(pan, matrix, x, y+1);
dfs1(pan, matrix, x+1, y);
dfs1(pan, matrix, x, y-1);
dfs2(pan, matrix, x-1, y);
}else {
return;
}
}
public void dfs2(boolean[][] pan,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;
i++;
matrix[x][y]=i;
dfs2(pan, matrix, x-1, y);
dfs1(pan, matrix, x, y+1);
}else {
return;
}
}
}
这题跟上次的螺旋矩阵一样,不过换成了每经过的一格为赋值为i=1,然后依次递增。比如n=3;
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]