给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
解题思路
按层进行数字的填充,每一层都按四条边的位置依次填充
代码
class Solution {int z=1;public int[][] generateMatrix(int n) {int[][] matrix = new int[n][n];int r=matrix.length,c=matrix.length,x=0,y=0;put(r,c,x,y,matrix);return matrix;}public void put (int r,int c,int x,int y,int[][] matrix){if(r<=0||c<=0) return;//矩阵有偶数层if(r==1)//矩阵有奇数层,最后一层只有一个元素{ matrix[y][x]=z;return;}for (int i=x;i<x+c;i++)matrix[y][i]=z++;for (int i=y+1;i<y+r-1;i++)matrix[i][x+c-1]=z++;for (int i=x+c-1;i>=x;i--)matrix[y+r-1][i]=z++;for (int i=y+r-2;i>y;i--)matrix[i][x]=z++;put(r-2,c-2,x+1,y+1,matrix);}
}