给定一个m x n大小的矩阵(m行,n列),按螺旋的顺序返回矩阵中的所有元素。 输入:[[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]
时间: 2023-08-23 14:06:53 浏览: 79
好的,这是一个很有趣的问题,我可以为您解答。这个问题的解决方法是按照螺旋的方向,依次遍历矩阵中的每一个元素。下面是实现的Python代码:
```python
def spiralOrder(matrix):
res = []
if not matrix:
return res
row, col = len(matrix), len(matrix[0])
left, right, top, bottom = 0, col-1, 0, row-1
while left <= right and top <= bottom:
for i in range(left, right+1):
res.append(matrix[top][i])
for j in range(top+1, bottom+1):
res.append(matrix[j][right])
if left < right and top < bottom:
for i in range(right-1, left, -1):
res.append(matrix[bottom][i])
for j in range(bottom, top, -1):
res.append(matrix[j][left])
left, right, top, bottom = left+1, right-1, top+1, bottom-1
return res
```
这个函数接受一个矩阵作为输入,然后返回一个按照螺旋顺序遍历矩阵的列表。具体的实现方法是,设置四个指针,分别代表矩阵的左、右、上、下四个边界,然后按照顺序遍历矩阵的每一个元素,将其添加到结果列表中。最后返回结果列表即可。
阅读全文