路径的长度即为矩阵中的元素数量,当路径的长度达到矩阵中的元素数量时即为完整路径,将该路径返回。
循环打印: “从左向右、从上向下、从右向左、从下向上” 四个方向循环打印。
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
if not matrix or not matrix[0]:
return []
r,c = len(matrix),len(matrix[0])
res=[]
left,right,top,bottom = 0,c-1,0,r-1
while left<=right and top<=bottom:
for i in range(left,right+1):
res.append(matrix[top][i])
for j in range(top+1,bottom+1):
res.append(matrix[j][right])
if left<right and top<bottom:
for i in range(right-1,left,-1):
res.append(matrix[bottom][i])
for j in range(bottom,top,-1):
res.append(matrix[j][left])
left,right,top,bottom=left+1,right-1,top+1,bottom-1
return res