59. 螺旋矩阵2

更多精彩内容,请关注【力扣中等题】。

题目

难度:★★★☆☆
类型:数组
方法:排序

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

示例

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

解答

这道题目与【题目56. 螺旋矩阵】类似,这里我们首先建立一个全为零的空图,然后从外向内填充连续数字,注意转折点的判断过程:遇到边界或者非零数。

class Solution:
    def generateMatrix(self, n):
        """
        :param n: int
        :return: List[List[int]]
        """

        matrix = [[0]*n for _ in range(n)]
        i, j, di, dj = 0, 0, 0, 1
        for k in range(1, n**2+1):
            matrix[i][j] = k
            if matrix[(i+di) % n][(j+dj) % n] != 0:
                di, dj = dj, -di
            i += di
            j += dj
        return matrix

如有疑问或建议,欢迎评论区留言~

你可能感兴趣的:(59. 螺旋矩阵2)