对矩阵做回形遍历,参考了讨论区的答案,此类问题可总结为:
最初di=0,dj=1
之后di=1,dj=0
之后di=0,dj=-1
之后di=-1,dj=0
if res[(i+di)%n][(j+dj)%n]:
di, dj = dj, -di
class Solution(object):
def generateMatrix(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
res = [[0]*n for _ in range(n)]
i, j, di, dj = 0, 0, 0, 1
for k in range(1, n**2+1):
res[i][j] = k
if res[(i+di)%n][(j+dj)%n]:
di, dj = dj, -di
i += di
j += dj
return res