Array
054. Spiral Matrix
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
即 给定一个的矩阵,顺时针输出矩阵中的元素
举个栗子
Input:
Output:
Solutions
先考虑第一行,第一行直接加入list,
再考虑最右边一列,把矩阵每行最后一个元素加入list
然后考虑最后一行,最后一行逆序加入list
最后考虑最左边一列,把矩阵每行第一个元素取出来然后逆序加入list
把加入list的元素删除,那么第一轮结束后,我们就把矩阵最外层的元素按顺序都加入了list,剩下了一个新的大小为的矩阵,继续上述操作,直到只剩下一行直接加入list
class Solution:
def spiralOrder(self, matrix):
"""
:type matrix: List[List[int]]
:rtype: List[int]
"""
res=[]
try:
while len(matrix)>1:
##top
res+=matrix[0]
matrix.pop(0)
##right side
res+=[x[-1] for x in matrix]
for x in matrix:
x.pop(-1)
##bottom
res+= matrix[-1][::-1]
matrix.pop(-1)
##left side
res+=[x[0] for x in matrix][::-1]
for x in matrix:
x.pop(0)
##now only one row
res+=matrix[0]
return res
except IndexError:
return res
网友评论