螺旋矩阵 II

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

示例:

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

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] m = new int[n][n];
        //boolean[][] inq = new boolean[n][n];
        int count = 1;
        for (int i = 0; i < n; i++) {
            count = generate(m, i, i, count);
            //count = count + n * n - 1;
        }
        
        return m;
    }
    
    public static int generate(int[][] m, int x, int y, int count) {
        int r = 0, c = 0;
        int n = m.length;
        for (c = y; c < n; c++) {
            if (m[x][c] == 0) {
                m[x][c] = count;
                count++;
            }else {
                break;
            }
        }
        c = c - 1;
        
        for (r = x + 1; r < n; r++) {
            if (m[r][c] == 0) {
                m[r][c] = count;
                count++;
            }else {
                break;
            }
        }
        r = r - 1;
        
        for (c = c - 1; c >= 0; c--) {
            if (m[r][c] == 0) {
                m[r][c] = count;
                count++;
            }else {
                break;
            }
        }
        c = c + 1;
        
        for (r = r - 1; r >= 0; r--) {
            if (m[r][c] == 0) {
                m[r][c] = count;
                count++;
            }else {
                break;
            }
        }
        return count;
    }

}

你可能感兴趣的:(螺旋矩阵 II)