1.题目
给你一个数n
生成一个包含1-n^2
的螺旋形矩阵
n = 3
矩阵为
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
2.算法
分层,然后按照上右下左的顺序放入数组中
public int[][] generateMatrix(int n) {
// Write your code here
if (n < 0) {
return null;
}
int[][] res = new int[n][n];
int levelNum = n / 2;
int num = 1;
for (int level = 0; level < levelNum; level++) {
for (int i = level; i < n - level - 1; i++) {
res[level][i] = num++;
}
for (int i = level; i < n - level - 1; i++) {
res[i][n - level - 1] = num++;
}
for (int i = n - level - 1; i > level; i--) {
res[n - level - 1][i] = num++;
}
for (int i = n - level - 1; i > level; i--) {
res[i][level] = num++;
}
}
if (n % 2 == 1) {
res[levelNum][levelNum] = num;
}
return res;
}