(一)题目描述
给你一个正整数 n
,生成一个包含 1
到 n2
所有元素,且元素按顺时针顺序螺旋排列的 n x n
正方形矩阵 matrix
。
(二)解题思路
与螺旋矩阵1的思路大同小异:设置top、down、left、right四个变量记录当前应该填入的数在二维数组中的大致位置,确定在数组中应该填入的位置即可。
(三)代码:
class Solution16 {
public int[][] generateMatrix(int n) {
int top=0;
int down=n-1;
int left=0;
int right=n-1;
int k=1;//记录所需要的赋的值
int res=n*n;
int[][] target=new int[n][n];
while(k<=res){
// 最上面一排填入位置
for (int i = left; i <=right ; i++) {
target[top][i]=k;
k++;
}
top++;
// 右边一列填入位置
for (int i = top; i <=down; i++) {
target[i][right]=k;
k++;
}
right--;
//底层一列填入位置
for (int i = right; i >=left ; i--) {
target[down][i]=k;
k++;
}
down--;
//左边一列填入位置
for (int i = down; i >=top ; i--) {
target[i][left]=k;
k++;
}
left++;
}
return target;
}
}