【leetcode11】

54. 螺旋矩阵

  • class Solution:
  •     def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
  •         if not matrix:
  •             return []
  •         t,l=0,0
  •         r=len(matrix[0])-1
  •         b=len(matrix)-1
  •         res=[]
  •         while True:
  •             for i in range(l,r+1):
  •                 res.append(matrix[t][i])
  •             t+=1
  •             if t > b:
  •                 break
  •             for i in range(t,b+1):
  •                 res.append(matrix[i][r])
  •             r-=1
  •             if l > r:
  •                 break
  •             for i in range(r,l-1,-1):
  •                 res.append(matrix[b][i])
  •             b-=1
  •             if t>b:
  •                 break
  •             for i in range(b,t-1,-1):
  •                 res.append(matrix[i][l])
  •             l+=1
  •             if l > r:
  •                 break
  •         return res

1.区间左闭右开,故正向循环右边界加一,逆向循环右边界减一

2.边界条件不能带等号,否则漏一行或一列数据

发表评论