class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
result = []
row = len(matrix) - 1
col = len(matrix[0]) - 1
rh = 1
ch = 0
flag = 1
r = c = 0
for _ in range((row + 1) * (col + 1)):
if flag == 1:
result.append(matrix[r][c])
if c == col:
col -= 1
r += 1
flag = 2
else:
c += 1
elif flag == 2:
result.append(matrix[r][c])
if r == row:
row -= 1
c -= 1
flag = 3
else:
r += 1
elif flag == 3:
result.append(matrix[r][c])
if c == ch:
ch += 1
r -= 1
flag = 4
else:
c -= 1
else:
result.append(matrix[r][c])
if r == rh:
rh += 1
c += 1
flag = 1
else:
r -= 1
return result