class Solution: def spiralOrder(self , matrix ): res = [] i, j, di, dj = 0, 0, 0, 1 n, m = len(matrix), len(matrix[0]) if matrix != []: for _ in range(n * m): res.append(matrix[i][j]) matrix[i][j] = 0 if matrix[(i+di)%n][(j+dj)%m] == 0: di, dj = dj, -di i += di j += dj return res