题目链接
https://leetcode.cn/problems/spiral-matrix-ii/
题解
题解一(Java)
class Solution {
public int[][] generateMatrix(int n) {
// 创建数组
int[][] arr = new int[n][n];
// 循环的圈数
int loop = n / 2;
// 每次需要填充的数字
int num = 1;
// 每一圈循环开始的索引
int start = 0;
// 每一圈赋值,[i][i]就是每一圈的开始位置
for (int i = 0; i < loop; i++) {
// 临时索引,用来迭代填充的位置
int index1 = start, index2 = start;
// 向右
while (index2 < n - i - 1) {
arr[index1][index2] = num++;
index2++;
}
// 向下
while (index1 < n - i - 1) {
arr[index1][index2] = num++;
index1++;
}
// 向左
while (index2 > i) {
arr[index1][index2] = num++;
index2--;
}
// 向上
while (index1 > i) {
arr[index1][index2] = num++;
index1--;
}
start++;
}
// 如果n是奇数,填充最中心的一个
if (n % 2 != 0)
arr[n / 2][n / 2] = num;
return arr;
}
}