题目
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
思路
- 这个问题可以分层考虑,只需要完整表示出最外面一层,内层只需要通过循环就可以逐层实现
- 而最外一层,只需要考虑“从左到右一行”、“从上到下一列”、“从右到左一行”、“从下到上一列”四个方向,即可解决一层。
代码
class Solution {
public int[][] generateMatrix(int n) {
int i=0;
int c=1;
int[][] Matrix=new int[n][n];
while(c<=n*n) {
//从左到右一行
for (int j = i; j < n - i; j++) {
Matrix[i][j]=c++;
}
//从上到下一列
for(int j=i+1;j<n-i;j++){
Matrix[j][n-i-1]=c++;
}
//从右往左
for(int j = n-i-2;j>=i;j--){
Matrix[n-i-1][j]=c++;
}
//从下往上
for(int j=n-i-2;j>i;j--){
Matrix[j][i]=c++;
}
i++;
}
return Matrix;
}
}