classSolution: defspiralOrder(self, matrix: List[List[int]]) -> List[int]: m = len(matrix) n = len(matrix[0]) max_layer = (min(m, n) + 1) // 2 ans = [] for layer inrange(max_layer): for i inrange(layer, n-layer): ans.append(matrix[layer][i]) for i inrange(layer+1, m-layer): ans.append(matrix[i][n-layer-1]) iflen(ans) == n * m: return ans for i inrange(n-layer-2, layer-1, -1): ans.append(matrix[m-layer-1][i]) for i inrange(m-layer-2, layer, -1): ans.append(matrix[i][layer]) return ans