59-spiral-matrix-ii¶
Try it on leetcode
Description¶
Given a positive integer n
, generate an n x n
matrix
filled with elements from 1
to n2
in spiral order.
Example 1:

Input: n = 3 Output: [[1,2,3],[8,9,4],[7,6,5]]
Example 2:
Input: n = 1 Output: [[1]]
Constraints:
1 <= n <= 20
Solution(Python)¶
class Solution:
def generateMatrix(self, n):
matrix = [[0] * n for _ in range(n)]
x, y, dx, dy = 0, 0, 1, 0
for i in range(n * n):
matrix[y][x] = i + 1
if (
not 0 <= x + dx < n
or not 0 <= y + dy < n
or matrix[y + dy][x + dx] != 0
):
dx, dy = -dy, dx
x, y = x + dx, y + dy
return matrix