描述:
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
示例 1:
输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]
示例 2:
输入:n = 1
输出:[[1]]
提示:
1 <= n <= 20
class Solution {
public int[][] generateMatrix(int n) {
int[][] arr = new int[n][n];
// 1.环的个数:
int round = n / 2 + n % 2;
// 环的起始数字
int start = 1;
for (int i = 1; i <= round; i++) {
int top = i - 1;// 行下标
int end = n - i;// 行下标
int right = n - i;// 列下标
int left = i - 1;// 列下标
int num = n - i * 2 + 1;// 四个边的数量
if (num == 0) {
arr[top][left] = start++;
} else {
for (int j = 0; j < num; j++)arr[top][left + j] = start++;
for (int j = 0; j < num; j++)arr[top + j][right] = start++;
for (int j = 0; j < num; j++)arr[end][right - j] = start++;
for (int j = 0; j < num; j++)arr[end - j][left] = start++;
}
}
return arr;
}
}