本题主要是利用 dfs 进行求解,给出的条件是任意起点,则 matrix 中等于 word[0] 的均可作为路径的起点,同时每次访问需要记录已经过的节点,需要注意的是上一次的已访问节点不会影响下一次的访问,所以在本次访问中,若没有找到完整路径需将已访问节点恢复初始状态;
代码如下:
def hasPath(self , matrix , word ): # write code here def dfs(visited, x, y, s): if s == len(word): return True if x < 0 or x >= m or y < 0 or y >= n or visited[x][y] or matrix[x][y] != word[s]: return False visited[x][y] = True for di, dj in dirs: xi, yj = x + di, y + dj if dfs(visited, xi, yj, s + 1): return True visited[x][y] = False m, n = len(matrix), len(matrix[0]) visited = [[False for _ in range(n)] for _ in range(m)] dirs = [(-1, 0), (0, 1), (1, 0), (0, -1)] for i in range(m): for j in range(n): if matrix[i][j] == word[0]: if dfs(visited, i, j, 0): return True return False