1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: if not matrix: return [] n = len(matrix) m = len(matrix[0]) l, r, t, b = 0, m - 1, 0, n - 1 res = list() 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 r < l: break for i in range(r, l - 1, -1): res.append(matrix[b][i]) b -= 1 if b < t: break for i in range(b, t - 1, -1): res.append(matrix[i][l]) l += 1 if l > r: break return res
|