LeetCode54 螺旋矩阵
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
m, n = len(matrix), len(matrix[0])
l, r, t, b, cnt, tar, ans = 0, n - 1, 0, m - 1, 0, m * n, []
while True:
for i in range(l, r + 1): # left -> right
ans.append(matrix[t][i])
cnt = cnt + 1
t = t + 1
if cnt == tar: break
for i in range(t, b + 1): # top -> bottom
ans.append(matrix[i][r])
cnt = cnt + 1
r = r - 1
if cnt == tar: break
for i in range(r, l - 1, -1): # right -> left
ans.append(matrix[b][i])
cnt = cnt + 1
b = b - 1
if cnt == tar: break
for i in range(b, t - 1, -1): # bottom -> top
ans.append(matrix[i][l])
cnt = cnt + 1
l = l + 1
if cnt == tar: break
return ans[:]