LeetCode 59. Spiral Matrix II(螺旋矩阵 II java)

给定一个正整数 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(螺旋矩阵 II java))