leetcode_54. 螺旋矩阵

给你一个 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
原文地址:https://www.cnblogs.com/hqzxwm/p/14409035.html