问题
给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。
例子

思路
-
方法1
以螺旋的方式访问各个位置的同时把对应的数字填进去
-
方法2
代码
//方法1
class Solution {
public int[][] generateMatrix(int n) {
int[][] res = new int[n][n];
int u=0,d=n-1,l=0,r=n-1;
int num=1;
while(true){
for(int i=l; i<=r; i++) res[u][i]=num++;
if(++u>d) break;
for(int i=u; i<=d; i++) res[i][r]=num++;
if(--r<l) break;
for(int i=r; i>=l; i--) res[d][i]=num++;
if(--d<u) break;
for(int i=d; i>=u; i--) res[i][l]=num++;
if(++l>r) break;
}
return res;
}
}
//方法2

该博客介绍如何生成一个n*n的正方形矩阵,矩阵中的数字从1到n^2按照顺时针螺旋顺序排列。文章提供两种不同的实现方法,详细解释了思路并给出了代码实现。
350

被折叠的 条评论
为什么被折叠?



