问题
给你一个数n生成一个包含1到n^2的螺旋形矩阵
样例
矩阵为
[
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]
思路
将矩阵转化成一个x轴向右,y轴向下的x0y坐标轴,有助于思考。
思路比较简单,就是螺旋遍历。
实现
public static int[][] generateMatrix(int n) {
// write your code here
//初始化矩阵
int[][] metrix = new int[n][n];
//将矩阵转化成一个x轴向右,y轴向下的x0y坐标轴,有助于思考
int x_start = 1;
int x_end = n;
int y_start = 1;
int y_end = n;
int flag = 0;
//i是准备插入正确位置的元素
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;
如果文章对你有帮助的话,不要忘记打赏小编哦
网友评论