编程学习笔记

LeetCode 59. Spiral Matrix II(螺旋

2018-08-30  本文已影响45人  烛火的咆哮

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

示例:

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

思路:

代码:

    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;
    }

总结:

上一篇下一篇

猜你喜欢

热点阅读