classSolution:defspiralOrder(self, matrix: List[List[int]])-> List[int]:ifnot matrix:return[]
m, n =len(matrix),len(matrix[0])
left, right, up, down =-1, n,0, m
res =[]
flag =0# 0 to right, 1 to down, 2 to left, 3 to up
i, j =0,0for _ inrange(m*n):if flag ==0:
res.append(matrix[i][j])
j +=1if j == right:
i, j, flag = i+1, j-1,1
right -=1elif flag ==1:
res.append(matrix[i][j])
i +=1if i == down:
i, j, flag = i-1, j-1,2
down -=1elif flag ==2:
res.append(matrix[i][j])
j -=1if j == left:
i, j, flag = i-1, j+1,3
left +=1else:
res.append(matrix[i][j])
i -=1if i == up:
i, j, flag = i+1, j+1,0
up +=1return res