描述

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

示例:

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

Python

创建全0矩阵,用旋转的方式添加数值,下一个数字不是0的时候进行转弯

class Solution:
    def generateMatrix(self, n):
        A = [[0] * n for _ in range(n)] # 创建n*n的全0数组
        i, j, di, dj = 0, 0, 0, 1
        for k in range(n*n):
            A[i][j] = k + 1
            if A[(i+di)%n][(j+dj)%n]: # key step
                di, dj = dj, -di
            i += di
            j += dj
        return A