leetcode 059.螺旋矩阵 II

239 阅读1分钟

059.螺旋矩阵 II

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

输入: 3
输出:
[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]
class Solution:
    def generateMatrix(self, n: int) -> [[int]]:
        A = [[0] * n for _ in range(n)]  # 用0填充整个方阵
        left, right, up, down = 0, n - 1, 0, n - 1
        num = 1
        while left <= right and up <= down:
            for i in range(left, right + 1):
                A[up][i] = num
                num += 1
            up += 1
            for i in range(up, down + 1):
                A[i][right] = num
                num += 1
            right -= 1
            for i in reversed(range(left, right + 1)):
                A[down][i] = num
                num += 1
            down -= 1
            for i in reversed(range(up, down + 1)):
                A[i][left] = num
                num += 1
            left += 1
        return A