给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
示例 1:
输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]
示例 2:
输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/spiral-matrix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
if not matrix or not matrix[0]:return []
rows,columns=len(matrix),len(matrix[0])
total=rows*columns
res=[]
directions=[[0,1],[1,0],[0,-1],[-1,0]]#右、下、左,上
row,column=0,0
directionIndex=0
for i in range(total):
res.append(matrix[row][column])
matrix[row][column]='v'
nextRow,nextColumn=row+directions[directionIndex][0],column+directions[directionIndex][1]
if not(0<=nextRow<rows and 0<=nextColumn<columns and not matrix[nextRow][nextColumn]=='v'):
directionIndex=(directionIndex+1)%4
row+=directions[directionIndex][0]
column+=directions[directionIndex][1]
return res