59.Spiral Matrix II === ###### tags: `Medium`,`Array`,`Matrix` [59. Spiral Matrix II](https://leetcode.com/problems/spiral-matrix-ii/) ### 題目描述 Given a positive integer `n`, generate an `n x n` `matrix` filled with elements from `1` to n^2^ in spiral order. ### 範例 **Example 1:** ![](https://assets.leetcode.com/uploads/2020/11/13/spiraln.jpg) ``` Input: n = 3 Output: [[1,2,3],[8,9,4],[7,6,5]] ``` **Example 2:** ``` Input: n = 1 Output: [[1]] ``` **Constraints**: * 1 <= `n` <= 20 ### 解答 #### Python 偷懶拿昨天的 code 改寫 ```python= class Solution: def generateMatrix(self, n: int) -> List[List[int]]: directions = [(0, 1), (1, 0), (0, -1), (-1, 0)] d = 0 sx, sy = 0, 0 matrix = [[0] * n for _ in range(n)] fill_val = 1 matrix[sx][sy] = fill_val while fill_val < n * n: dx, dy = directions[d % 4] nx, ny = sx + dx, sy + dy if 0 <= nx < n and 0 <= ny < n and not matrix[nx][ny]: fill_val += 1 matrix[nx][ny] = fill_val sx, sy = nx, ny else: d += 1 return matrix ``` > [name=Ron Chen][time=Wed, May 10, 2023] ### Reference [回到題目列表](https://hackmd.io/@Marsgoat/leetcode_every_day)