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
| class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
if not matrix: return []
m, n = len(matrix), len(matrix[0])
l, r, t, b, res = 0, n - 1, 0, m - 1, []
while True:
for j in range(l, r + 1):
res.append(matrix[t][j])
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 j in range(r, l - 1, -1):
res.append(matrix[b][j])
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
|