问题
给定一个正整数 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