算法:螺旋矩阵 II

xiaoxiao2021-02-28  15

问题

给你一个数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;

如果文章对你有帮助的话,不要忘记打赏小编哦

转载请注明原文地址: https://www.6miu.com/read-1600406.html

最新回复(0)