题解 | #矩阵中的路径#

矩阵中的路径

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

#与题目【腐烂的橘子】类似,但本题使用的是DFS,应该后进先出,同时有了不能走回头路的限制
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param matrix char字符型二维数组 
# @param word string字符串 
# @return bool布尔型
#
class Solution:
    def hasPath(self , matrix: List[List[str]], word: str) -> bool:
        # write code here
        M,N=len(matrix),len(matrix[0])
        def neighb(a,b):
            for (i,j) in ((a+1,b),(a-1,b),(a,b+1),(a,b-1)):
                if 0<=i<M and 0<=j<N:
                    yield i,j
        f=word[0]
        res=[]
        visits=[]
        for i,l in enumerate(matrix):
            for j,v in enumerate(l):
                if v==f:
                    res.append((i,j,0))
        prev=-1
        while res:
            i,j,idx=res.pop(0)
            if idx==prev:
                visits.clear()
            prev=idx
            visits.append((i,j))
            if idx==len(word)-1:
                return True
            for x,y in neighb(i,j):
                if matrix[x][y]==word[idx+1] and (x,y) not in visits:
                    res.insert(0,(x,y,idx+1))
        print(visits)
        return False

全部评论

相关推荐

10-17 23:18
已编辑
西北农林科技大学 Web前端
独行m:给25可以试试,但他只能给12,那就是纯纯的事精
秋招,不懂就问
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务