问题
给你一个数n生成一个包含1到n^2的螺旋形矩阵
样例
矩阵为
[
[
1,
2,
3 ],
[
8,
9,
4 ],
[
7,
6,
5 ]
]
思路
将矩阵转化成一个x轴向右,y轴向下的x0y坐标轴,有助于思考。 思路比较简单,就是螺旋遍历。
实现
public static int[][] generateMatrix(
int n) {
int[][] metrix =
new int[n][n];
int x_start =
1;
int x_end = n;
int y_start =
1;
int y_end = n;
int flag =
0;
int i=
1;
while (i<=n*n) {
switch (flag) {
case 0:
for (
int j=x_start;j<=x_end;j++) {
metrix[y_start
-1][j
-1] = i;
i++;
}
y_start++;
flag++;
break;
case 1:
for (
int j=y_start;j<=y_end;j++) {
metrix[j -
1][x_end -
1] = i;
i++;
}
x_end--;
flag++;
break;
case 2:
for (
int j=x_end;j>=x_start;j--) {
metrix[y_end -
1][j -
1] = i;
i++;
}
y_end--;
flag++;
break;
case 3:
for (
int j=y_end;j>=y_start;j--) {
metrix[j -
1][x_start -
1] = i;
i++;
}
x_start++;
flag -=
3;
break;
default:
break;
}
}
return metrix;
如果文章对你有帮助的话,不要忘记打赏小编哦