美文网首页编程学习笔记
LeetCode 59. Spiral Matrix II(螺旋

LeetCode 59. Spiral Matrix II(螺旋

作者: 烛火的咆哮 | 来源:发表于2018-08-30 10:34 被阅读45次

    给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。

    示例:

    输入: 3
    输出:
    [
    [ 1, 2, 3 ],
    [ 8, 9, 4 ],
    [ 7, 6, 5 ]
    ]

    思路:

    • 主题代码按照螺旋矩阵1,设置e外变量存储递增的元素值,注意n为0或1的边界值处理即可.
      传送门

    代码:

        public int[][] generateMatrix(int n){
            if(n == 0) return new int[0][0];
            if(n == 1) {
                int[][] n1 = new int[1][1];
                n1[0][0] = 1;
                return n1;
            }
            int matrix[][] = new int[n][n];
            int i = 0, j = 0, wid = n, high = n, go = 0,k = 1;
            while (k < n * n) {
                // 对应左下右上四个方向
                switch (go) {
                // 对于横向,全部扫描获取
                case 0:
                    while (j < wid) {
                        matrix[i][j] = k;
                        k++;
                        j++;
                    }
                    j--;
                    i++;
                    go++;
                    break;
                case 1:
                    while (i < high - 1) {
                        matrix[i][j] = k;
                        k++;
                        i++;
                    }
                    go++;
                    break;
                case 2:
                    while (j >= n - wid) {
                        matrix[i][j] = k;
                        k++;
                        j--;
                    }
                    j++;
                    i--;
                    go++;
                    high--;
                    break;
                case 3:
                    while (i > n - high) {
                        matrix[i][j] = k;
                        k++;
                        i--;
                    }
                    go = 0;
                    wid--;
                    break;
                }
            }
            return matrix;
        }
    

    总结:

    • 第一次遇到该问题花了不少时间调试,但在完成之后,遇到本题类似题目,写起来就是及其简单了
    • n为0时传入空矩阵,为1时传入单个元素值为1的矩阵

    相关文章

      网友评论

        本文标题:LeetCode 59. Spiral Matrix II(螺旋

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