题解 | #矩阵中的路径#

矩阵中的路径

https://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6

class Solution:
    def hasPath(self , matrix: List[List[str]], word: str) -> bool:
        # write code here
        row = len(matrix)
        col = len(matrix[0])
        
        def dfs(i, j, k, visited):           #visisted已访问的坐标set(),当前符合长度
            if k == len(word):
                return True
            for x, y in [(1,0), (-1,0), (0,1), (0,-1)]:
                tmp_i = i + x
                tmp_j = j + y
                if 0<=tmp_i<row and 0<=tmp_j<col and (tmp_i,tmp_j) not in visited and matrix[tmp_i][tmp_j] == word[k]:
                    visited.add((tmp_i,tmp_j))
                    if dfs(tmp_i, tmp_j, k+1, visited):
                        return True                 #开始递归,如果最后k==len(word)则输出True,如果不行则回溯
                    visited.remove((tmp_i,tmp_j))
            return False
            
        for i in range(row):
            for j in range(col):
                if matrix[i][j] == word[0] and dfs(i, j, 1,{(i, j)}):   #找起点
                        return True
        return False

全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务