擅长:python、mysql、java
<p>下面是一个逐层解决问题的递归解决方案,从最外层开始,顺时针:</p>
<pre><code>def spiral(matrix, level=0):
m, n = len(matrix), len(matrix[0]) # MxN matrix
if level >= m // 2 and level >= n // 2:
return # no more layer to solve
left, right, top, bottom = level, n - 1 - level, level, m - 1 - level
for j in range(left, right):
print(matrix[top][j])
for i in range(top, bottom):
print(matrix[i][right])
for j in range(right, left, -1):
print(matrix[bottom][j])
for i in range(bottom, top, -1):
print(matrix[i][left])
spiral(matrix, level=level + 1)
</code></pre>