[LeetCode] 54. 螺旋矩阵
2018-12-03 本文已影响2人
杏仁小核桃
54. 螺旋矩阵
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例:
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]
解法:用变量left, right, top, bottom记录左,右,顶,底。然后按照左到右,顶到底,右到左,底到顶的顺序循环,把遍历的元素加入到结果。
class Solution:
def spiralOrder(self, matrix):
result = []
if not matrix:
return result
left, right, top, bottom = 0, len(matrix[0]) - 1, 0, len(matrix) - 1
while left <= right and top <= bottom:
for i in range(left, right+1):
result.append(matrix[top][i])
for j in range(top+1, bottom):
result.append(matrix[j][right])
for i in range(right, left-1, -1):
if top < bottom:
result.append(matrix[bottom][i])
for j in range(bottom-1, top, -1):
if left < right:
result.append(matrix[j][left])
left, right, top, bottom = left+1, right-1, top+1, bottom-1
return result