解法一
模拟螺旋矩阵数递增的步骤,计算好沿当前方向要走的步数。
class Solution {
public int[][] generateMatrix(int n) {
int[][] ans = new int[n][n];
int l = n;
int x = 0, y = -1;
int num = 0;
while (l > 0) {
// 向右
for (int i = 0; i < l; ++i) {
y++;
num++;
ans[x][y] = num;
}
// 向下
l--;
for (int i = 0; i < l; ++i) {
x++;
num++;
ans[x][y] = num;
}
// 向左
for (int i = 0; i < l; ++i) {
y--;
num++;
ans[x][y] = num;
}
// 向上
l--;
for (int i = 0; i < l; ++i) {
x--;
num++;
ans[x][y] = num;
}
}
return ans;
}
}