- class Solution:
- def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
- n=len(matrix)
- m=len(matrix[0])
- l,r,t,b=0,m-1,0,n-1
- num,ans=1,n*m
- res=[]
- while num<=ans:
- for i in range(l,r+1):
- res.append(matrix[t][i])
- num+=1
- t+=1
- for i in range(t,b+1):
- res.append(matrix[i][r])
- num+=1
- r-=1
- if t <= b:
- for i in range(r,l-1,-1):
- res.append(matrix[b][i])
- num+=1
- b-=1
- if l<=r:
- for i in range(b,t-1,-1):
- res.append(matrix[i][l])
- num+=1
- l+=1
- return res
注意17,22行检查上,左边界仍然有效