1.题目描述:
给你一个正整数n,生成一个包含1到n平方的所有元素,且元素按顺时针顺序螺旋排列的n*n正方形矩阵matrix。
2.普通解法:
与leetcode54. 螺旋矩阵如出一辙,而且由于是正方形矩阵降低了难度,按照顺时针上右下左添加到数组中即可。
class Solution {
public int[][] generateMatrix(int n) {
int[][] arr = new int[n][n];
int count = (n + 1) / 2;//确定遍历层数,每次往里缩两行两列
int num = 1;
for (int i = 0; i < count; i++) {
for (int j = i; j < n - i; j++) {//上
arr[i][j] = num++;
}
for (int j = i + 1; j < n - i; j++) {//右
arr[j][n - i - 1] = num++;
}
for (int j = n - i - 2; j >= i && (n - i - 1 != i); j--) {//下
arr[n - i - 1][j] = num++;
}
for (int j = n - i - 2; j > i && (n - i - 1 != i); j--) {//左
arr[j][i] = num++;
}
}
return arr;
}
}