代码随想录 6

54. 螺旋矩阵

  1. class Solution:
  2.     def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
  3.         n=len(matrix)
  4.         m=len(matrix[0])
  5.         l,r,t,b=0,m-1,0,n-1
  6.         num,ans=1,n*m
  7.         res=[]
  8.         while num<=ans:
  9.             for i in range(l,r+1):
  10.                 res.append(matrix[t][i])
  11.                 num+=1
  12.             t+=1
  13.             for i in range(t,b+1):
  14.                 res.append(matrix[i][r])
  15.                 num+=1
  16.             r-=1
  17.             if t <= b:
  18.                 for i in range(r,l-1,-1):
  19.                     res.append(matrix[b][i])
  20.                     num+=1
  21.                 b-=1
  22.             if l<=r:
  23.                 for i in range(b,t-1,-1):
  24.                     res.append(matrix[i][l])
  25.                     num+=1
  26.                 l+=1
  27.         return res

注意17,22行检查上,左边界仍然有效

发表评论