classSolution:defspiralOrder(self, matrix):ifnot matrix:return[]
result =[]
rows =len(matrix)
columns =len(matrix[0])# for i in range(rows // 2):# for j in range(columns // 2):
i =0
result =[]while i*2<rows and i*2< columns:# 每一轮的起点相同for h inrange(i,columns - i):# 从左到右print('j,columns -j,h',i,columns -i,h)print('left to right',matrix[i][h])
result.append(matrix[i][h])if rows -2*i >=2:for v inrange(i+1,rows -i):# 从上到下# print('up to down',matrix[v][columns - j - 1])
result.append(matrix[v][columns - i -1])if rows -2*i >=2and columns -2*i >=2:for h inrange(columns-i-2,i-1,-1):# 从右到左# print('h',h)# print('right to left',matrix[rows - i -1][h])
result.append(matrix[rows - i -1][h])# print(matrix[rows - i -1][h])if columns -2*i >=2and rows -2*i >=3:for v inrange(rows - i -2,i,-1):# 从下到上# print('last',matrix[v][j])
result.append(matrix[v][i])# print(matrix[v][j])
i +=1return result
想不到的方法
ss Solution:defspiralOrder(self, matrix):
res =[]while matrix:
res += matrix.pop(0)print('res',res)
matrix =list(zip(*matrix))[::-1]return res