Spiral Matrix II

Given an integern, generate a square matrix filled with elements from 1 ton2in spiral order.

For example, Givenn=3,

[
 [ 1, 2, 3 ],
 [ 8, 9, 4 ],
 [ 7, 6, 5 ]
]

Solution:

class Solution(object):
    def generateMatrix(self, n):
        """
        :type n: int
        :rtype: List[List[int]]
        """
        if n <= 0:
            return []
        result = [[0 for c in range(n)] for r in range(n)]
        running = 1

        r, c = 0, 0

        m = n
        p = n

        while c < p and r < m:

            for i in range(c, p):
                result[r][i] = running
                running += 1
            r += 1

            for i in range(r, m):
                result[i][p - 1] = running
                running += 1
            p -= 1
            if r < m:
                for i in range(p - 1, c - 1, -1):
                    result[m - 1][i] = running
                    running += 1
                m -= 1
            if c < p:
                for i in range(m - 1, r - 1, -1):
                    result[i][c] = running
                    running += 1
                c += 1

        return result

Last updated

Was this helpful?