Leetcode 54.螺旋矩阵 学习:大佬主页 这是另一篇参考递归参考 clss Solution(object): def spirlOrder(self,matrix): #计算出矩阵的行列数 m = len(matrix) n = len(matrix[0]) #记录已经访问过的位置 visited = [0 for i in range(n) for j in range(m)] #更换方向 change_direction = {1:2,2:3,3:4,4:1} #步长 step = {1:[0,1],2:[1,0],3:[0,-1],4:[-1,0]} #初始方向 initdirec = 1 #当前方向 cur_direc = 1 #初始坐标 pos = [0,0] #初始输出数组 res = [matrix[0][0]] #初始访问矩阵 visited[0][0] = 1 #初始遍历次数 count = 1 while count<m*n: x,y = step[cur_direc] i,j = pos if 0<=i+x<m and 0<=j+y<n and visited[i+x][y+j] == 0: visited[i+x][j+y] = 1 pos = [i+x][j+y] res.append(matrix[i+x][j+y]) count +=1 else: cur_direc = change_direc[cur_direc] return res