Skip to content

59. Spiral Matrix II

Array Matrix Simulation

Problem - Spiral Matrix II

Medium

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

Solutions

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        result = [[0] * n for _ in range(n)]
        directions = (0, 1, 0, -1, 0)
        i = j = k =0

        for val in range(1, n * n + 1):
            result[i][j] = val
            x, y = i + directions[k], j + directions[k + 1]
            if x < 0 or x >= n or y < 0 or y >= n or result[x][y]:
                k = (k + 1) % 4
            i, j = i + directions[k], j + directions[k + 1]

        return result

Submission Stats:

  • Runtime: 0 ms (100.00%)
  • Memory: 17.8 MB (71.46%)