题解 | 螺旋矩阵
螺旋矩阵
https://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param matrix int整型二维数组
# @return int整型一维数组
#
class Solution:
def spiralOrder(self , matrix: List[List[int]]) -> List[int]:
# write code here
n = len(matrix)
if n<1:
return []
m = len(matrix[0])
if m<1:
return []
direction = [[0,1],[1,0],[0,-1],[-1,0]]
idx = 0
res = []
i,j = 0,0
total_num = 0
while (total_num<n*m):
res.append(matrix[i][j])
matrix[i][j] = 101 #纪录走过的位置
total_num +=1
i = i+direction[idx][0]
j = j+direction[idx][1]
if i<0 or i>=n or j<0 or j>=m or matrix[i][j]==101:#满足换方向条件
i = i-direction[idx][0]
j = j-direction[idx][1]
idx=(idx+1)%4
i = i+direction[idx][0]
j = j+direction[idx][1]
return res