class Solution: def generateMatrix(self, n: int) -> List[List[int]]: row = 0 col = 0 incrementing = True changingRow = False grid = [[-1 for _ in range(n)] for _ in range(n)] for i in range(n ** 2): # print(i, grid) # print(row, col, incrementing, changingRow) if row >= n or row < 0 or col >= n or col < 0: continue grid[row][col] = i + 1
if changingRow and incrementing: if row + 1 >= n or grid[row + 1][col] != -1: changingRow = False incrementing = False elif changingRow and not incrementing: if row - 1 < 0 or grid[row - 1][col] != -1: changingRow = False incrementing = True elif not changingRow and incrementing: if col + 1 >= n or grid[row][col + 1] != -1: changingRow = True elif not changingRow and not incrementing: if col - 1 < 0 or grid[row][col - 1] != -1: changingRow = True incrementing = False
if changingRow and incrementing: row += 1 elif changingRow and not incrementing: row -= 1 elif not changingRow and incrementing: col += 1 elif not changingRow and not incrementing: col -= 1 return grid