LC 54螺旋矩阵Spiral Matrix 中等
按顺时针螺旋顺序返回矩阵中的全部元素。
思路 四边界收缩:按上、右、下、左四条边依次遍历,每走完一条边收缩对应边界,越界即停。时间 O(mn)。
class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: ans = [] l, t = 0, 0 r = len(matrix[0]) - 1 b = len(matrix) - 1 while True: for i in range(l, r + 1): ans.append(matrix[t][i]) t += 1 if t > b: break for i in range(t, b + 1): ans.append(matrix[i][r]) r -= 1 if l > r: break for i in range(r, l - 1, -1): ans.append(matrix[b][i]) b -= 1 if t > b: break for i in range(b, t - 1, -1): ans.append(matrix[i][l]) l += 1 if l > r: break return ans