### spiralOrder 
from typing import *
def f_gold(matrix: List[List[int]]) -> List[int]:
    m, n = len(matrix), len(matrix[0])
    ans = []
    top, bottom, left, right = 0, m - 1, 0, n - 1
    while left <= right and top <= bottom:
        ans.extend([matrix[top][j] for j in range(left, right + 1)])
        ans.extend([matrix[i][right] for i in range(top + 1, bottom + 1)])
        if left < right and top < bottom:
            ans.extend([matrix[bottom][j] for j in range(right - 1, left - 1, -1)])
            ans.extend([matrix[i][left] for i in range(bottom - 1, top, -1)])
        top, bottom, left, right = top + 1, bottom - 1, left + 1, right - 1
    return ans