Loading

LeetCode 59 螺旋矩阵II

LeetCode59 螺旋矩阵II

题目描述

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

样例

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

算法分析

  • 方向数
  • (d++) % 4

时间复杂度度

\(O(n)\)

Java代码

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] res = new int[n][n];

        int[] dx = new int[]{0, 1, 0, -1};
        int[] dy = new int[]{1, 0, -1, 0};

        for(int i = 1, x = 0, y = 0, d = 0; i <= n*n; i ++){
            res[x][y] = i;
            int a = x + dx[d];
            int b = y + dy[d];

            if(a < 0 || a >= n || b < 0 || b >= n || res[a][b] != 0){
                d = (d+1) % 4;
                a = x + dx[d];
                b = y + dy[d];
            }

            x = a;
            y = b;
        }

        return res;
    }
}
posted @ 2020-11-12 16:59  想用包子换论文  阅读(61)  评论(0)    收藏  举报