LeetCode刷题(28)

来源:互联网 发布:吊顶软件下载 编辑:程序博客网 时间:2024/06/15 11:20

对矩阵做回形遍历,参考了讨论区的答案,此类问题可总结为:
最初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