美文网首页
算法:螺旋矩阵 II

算法:螺旋矩阵 II

作者: 晋阳丶 | 来源:发表于2018-01-09 19:10 被阅读0次

    问题

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

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

    相关文章

      网友评论

          本文标题:算法:螺旋矩阵 II

          本文链接:https://www.haomeiwen.com/subject/skpgnxtx.html