classSolution(object):defspiralOrder(self, matrix):
res =[]
row, col=len(matrix)-1,len(matrix[0])-1
i, j =0,0while i<=row and j <=col:if i == row:for x inrange(j, col+1):
res.append(matrix[row][x])return res
if j == col:for x inrange(i, row+1):
res.append(matrix[x][col])return res
for x inrange(j, col+1):
res.append(matrix[i][x])for x inrange(i+1, row+1):
res.append(matrix[x][col])for x inrange(col-1, j-1,-1):
res.append(matrix[row][x])for x inrange(row-1, i,-1):
res.append(matrix[x][j])
i +=1
j +=1
row -=1
col -=1return res
classSolution(object):defgenerateMatrix(self, n):"""
:type n: int
:rtype: List[List[int]]
"""
matrix =[[0]* n for _ inrange(n)]
i, j =0,0
a, b= n -1, n-1
number =1
res =[]while i <= a and j <= b:if i == a and j == b:
matrix[i][j]= number
return matrix
for k inrange(j, b+1):
matrix[i][k]= number
number +=1for k inrange(i+1, a+1):
matrix[k][b]= number
number +=1for k inrange(b-1, j-1,-1):
matrix[a][k]= number
number +=1for k inrange(a-1, i,-1):
matrix[k][j]= number
number +=1
i +=1
j +=1
a -=1
b -=1return matrix