美文网首页
LeetCode-python 面试题04.01. 节点间通路

LeetCode-python 面试题04.01. 节点间通路

作者: wzNote | 来源:发表于2022-11-19 23:29 被阅读0次

    题目链接
    难度:中等       类型: DFS


    节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。

    示例

    输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2
    输出:true

    解题思路


    从起始点开始,一步一步走就好了

    代码实现

    基本的dfs解法

    class Solution:
        def findWhetherExistsPath(self, n: int, graph: List[List[int]], start: int, target: int) -> bool:
            visited = set()
            path = collections.defaultdict(set)
            for x, y in graph:
                path[x].add(y)
    
            def dfs(cur_start):
                if cur_start in visited:
                    return False
                if target in path[cur_start]:
                    return True
                visited.add(cur_start)
    
                for new_start in path[cur_start]:
                    if dfs(new_start):
                        return True
                return False
    
            return dfs(start)
    

    相关文章

      网友评论

          本文标题:LeetCode-python 面试题04.01. 节点间通路

          本文链接:https://www.haomeiwen.com/subject/thuixdtx.html