题目链接. - 力扣(LeetCode)
代码
class Solution {
static int [][]arr;
static int N ;
public int[][] generateMatrix(int n) {
arr = new int[n][n];
if(n==1){
arr[0][0]=1;
return arr;
}
N=n;
dfs(0,0,0);
return arr;
}
public static void dfs(int x,int y,int index){
if(arr[x][y]!=0){
return;
}
if(index==0){
while(arr[x][y]==0){
arr[x][y]= (y==0)?1:arr[x][y-1]+1;
if(y +1 < N && arr[x][y+1]==0){
y++;
}else{
x++;
break;
}
}
}
else if(index==1){
while(arr[x][y]==0){
arr[x][y]=arr[x-1][y]+1;
if(x +1 < N &&arr[x+1][y]==0){
x++;
}else{
y--;
break;
}
}
}
else if(index==2){
while(arr[x][y]==0){
arr[x][y]=arr[x][y+1]+1;
if(y-1>=0&&arr[x][y-1]==0){
y--;
}else{
x--;
break;
}
}
}
else if(index==3){
while(arr[x][y]==0){
arr[x][y]=arr[x+1][y]+1;
if(arr[x-1][y]==0){
x--;
}
else{
y++;
break;
}
}
}
dfs(x,y,(index+1)%4);
}
}