螺旋矩阵 #
题目 #
给定一个包含 m x n 个元素的矩阵(m 行,n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例 1:
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出: [1,2,3,6,9,8,7,4,5]
示例 2:
输入:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
输出: [1,2,3,4,8,12,11,10,9,5,6,7]
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
Example 1:
Input:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
Output: [1,2,3,6,9,8,7,4,5]
Example 2:
Input:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
Output: [1,2,3,4,8,12,11,10,9,5,6,7]
分析 #
题解 #
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
if not matrix:
return []
# 第一行,按顺序
result = matrix.pop(0)
# 最右侧
for i, l in enumerate(matrix[:-1]):
if l:
result.append(matrix[i].pop())
# 最后一行
if matrix:
result.extend(matrix.pop()[::-1])
# 最左侧
for i, l in enumerate(matrix[::-1]):
if l:
result.append(matrix[::-1][i].pop(0))
# 递归,合并结果
result.extend(self.spiralOrder(matrix))
return result
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。