class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
mapx = []
mapy = []
x = len(matrix)
y = len(matrix[0])
for i in range(x):
for j in range(y):
if matrix[i][j] == 0:
mapx.append(i)
mapy.append(j)
for i in mapx:
for j in range(y):
matrix[i][j] = 0
for i in mapy:
for j in range(x):
matrix[j][i] = 0
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
if not matrix or not matrix[0]:
return
rows, columns = len(matrix), len(matrix[0])
visited = [[False] * columns for _ in range(rows)]
total = rows * columns
order = [0] * total
directions = [[0,1],[1,0],[0,-1],[-1,0]]
row,column = 0,0
directionIndex = 0
for i in range(total):
order[i] = matrix[row][column]
visited[row][column] = True
nextRow, nextColumn = row + directions[directionIndex][0],column + directions[directionIndex][1]
if not (0<=nextRow<rows and 0<=nextColumn<columns and not visited[nextRow][nextColumn]):
directionIndex = (directionIndex + 1)% 4
row += directions[directionIndex][0]
column += directions[directionIndex][1]
return order