leetcode.array--59. Spiral Matrix II

来源:互联网 发布:音频合并时间软件 编辑:程序博客网 时间:2024/04/29 22:30

题目:59. Spiral Matrix II

题目链接:https://leetcode.com/problems/spiral-matrix-ii/description/

这个题目的意思呢,是给定一个整数n,要求把数字1~n^2按照顺时针螺旋顺序填充到一个n维方阵里面。

跟之前的螺旋方向遍历差不多吧,也是直接改的前一题的代码。

Python:

class Solution(object):    def generateMatrix(self, n):        """        :type matrix: List[List[int]]        :rtype: List[int]        """        if n==0:            return []        matrix=[[0 for col in range(n)] for row in range(n)]        def cango(x,y):            return x>=0 and x<n and y>=0 and y<n        direct=[(0,1),(1,0),(0,-1),(-1,0)]        vis=set()        def dfs(matrix,step,x,y,curDirect):            vis.add((x,y))            matrix[x][y]=step+1            if step==n*n-1:                return            nx,ny=x+curDirect[0],y+curDirect[1]            if cango(nx,ny) and (nx,ny) not in vis:                dfs(matrix,step+1,nx,ny,curDirect)            else:                for i in range(4):                    nx, ny = x + direct[i][0], y + direct[i][1]                    if cango(nx,ny) and (nx,ny) not in vis:                        dfs(matrix, step + 1, nx, ny, direct[i])                        break        dfs(matrix, 0, 0, 0, (0, 1))        return matrix