class Solution {
public int[][] generateMatrix(int n) {
int[][] matrix=new int[n][n];
generateMatrix(0, 0, 0, n-1, n-1, matrix);
return matrix;
}
private void generateMatrix(int num, int top, int left, int bottom, int right, int[][] matrix){
if(top>bottom||left>right)
return;
for(int k=left;k<=right;k++)
matrix[top][k]=++num;
for(int k=top+1;k<=bottom;k++)
matrix[k][right]=++num;
if(top!=bottom)
for(int k=right-1;k>=left;k--)
matrix[bottom][k]=++num;
if(left!=right)
for(int k=bottom-1;k>top;k--)
matrix[k][left]=++num;
generateMatrix(num, top+1, left+1, bottom-1, right-1, matrix);
}
}