给你一个数n生成一个包含1-n^2的螺旋形矩阵
样例
sn = 3
矩阵为
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
代码
public class Solution {
public int[][] generateMatrix(int n) {
if (n < 0) {
return null;
}
int[][] result = new int[n][n];
int xStart = 0;
int yStart = 0;
// num 通过自增给矩阵元素赋值
int num = 1;
while (n > 0) {
// 循环结束条件
if (n == 1) {
result[yStart][xStart] = num++;
break;
}
// 生成一圈矩阵
// 从左往右打印
for (int i = 0; i < n - 1; i++) {
result[yStart][xStart + i] = num++;
}
// 从上到下打印 xStart + n - 1 即上述打印从 xStart 开始循环 n-1 次后值为 xStart+n-1
// 从 0 到 n-1 只需要走 n-1 步
for (int i = 0; i < n - 1; i++) {
result[yStart + i][xStart + n - 1] = num++;
}
// 从右往左打印
for (int i = 0; i < n - 1; i++) {
result[yStart + n - 1][xStart + n - 1 - i] = num++;
}
// 从下往上打印
for (int i = 0; i < n - 1; i++) {
result[yStart + n - 1 - i][xStart] = num++;
}
xStart++;
yStart++;
// n 代表剩余行列数
n = n - 2;
}
return result;
}
}
网友评论