59. Spiral Matrix II - cocoder39/coco39_LC GitHub Wiki

59. Spiral Matrix II

difference with LC 54: here M == N so if left > right or up > down: break check can be skipped.

class Solution:
    def generateMatrix(self, n: int) -> List[List[int]]:
        left, right = 0, n-1
        up, down = 0, n-1
        matrix = [[0] * n for _ in range(n)]
        cur = 1
        while left <= right and up <= down:
            for i in range(left, right+1):
                matrix[up][i] = cur
                cur += 1
            up += 1
            
            for i in range(up, down+1):
                matrix[i][right] = cur
                cur += 1
            right -= 1
            
            if left > right or up > down:
                break
            
            for i in range(right, left-1, -1):
                matrix[down][i] = cur
                cur += 1
            down -= 1
            
            for i in range(down, up-1, -1):
                matrix[i][left] = cur
                cur += 1
            left += 1
        return matrix