题目: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