美文网首页
1971. 寻找图中是否存在路径(难度:简单)

1971. 寻找图中是否存在路径(难度:简单)

作者: 一直流浪 | 来源:发表于2022-12-30 17:06 被阅读0次

题目描述:https://leetcode.cn/problems/find-if-path-exists-in-graph

题目描述:

有一个具有 n 个顶点的 双向 图,其中每个顶点标记从 0n - 1(包含 0n - 1)。图中的边用一个二维整数数组 edges 表示,其中 edges[i] = [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 每个顶点对由 最多一条 边连接,并且没有顶点存在与自身相连的边。

请你确定是否存在从顶点 source 开始,到顶点 destination 结束的 有效路径

给你数组 edges 和整数 nsourcedestination,如果从 sourcedestination 存在 有效路径 ,则返回 true,否则返回 false

示例 1:

输入:n = 3, edges = [[0,1],[1,2],[2,0]], source = 0, destination = 2
输出:true
解释:存在由顶点 0 到顶点 2 的路径:
- 0 → 1 → 2 
- 0 → 2

示例 2:

输入:n = 6, edges = [[0,1],[0,2],[3,5],[5,4],[4,3]], source = 0, destination = 5
输出:false
解释:不存在由顶点 0 到顶点 5 的路径.

提示:

  • 1 <= n <= 2 * 10^5
  • 0 <= edges.length <= 2 * 10^5
  • edges[i].length == 2
  • 0 <= ui, vi <= n - 1
  • ui != vi
  • 0 <= source, destination <= n - 1
  • 不存在重复边
  • 不存在指向顶点自身的边

解法:并查集

使用并查集。

代码:

class Solution {
    private int[] parent;

    class UnionFind {
        public UnionFind(int n) {
            parent = new int[n];
            for (int i = 0; i < n; i++) {
                parent[i] = i;
            }
        }

        public int find(int x) {
            if (x != parent[x]) {
                parent[x] = find(parent[x]);
            }
            return parent[x];
        }

        private void union(int x, int y) {
            parent[find(x)] = parent[find(y)];
        }
    }

    public boolean validPath(int n, int[][] edges, int source, int destination) {
        UnionFind unionFind = new UnionFind(n);
        for (int[] edge : edges) {
            unionFind.union(edge[0], edge[1]);
        }
        return unionFind.find(source) == unionFind.find(destination);
    }
}

相关文章

  • 路径总和

    题目 难度级别:简单 给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相...

  • [算法](00001) Floyed

    介绍 利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法 思路 遍历所有地点(一层循环),判断该地点是否...

  • LeetCode 力扣 112. 路径总和

    题目描述(简单难度) 给定一个sum,判断是否有一条从根节点到叶子节点的路径,该路径上所有数字的和等于sum。 解...

  • java解压zip包出现乱码

    java解压zip包出现乱码 解决思路: 首先判断需要解压的文件是否存在或路径是否正确,接着判断路径是否存在,若不...

  • Graphx图算法【5】连通分量 ConnectedCompon

    Graphx的ConnectComponent求解图中的连通体,在图中任意两个顶点之间存在路径可达,则该图是连通图...

  • Python 判断路径、文件和目录(文件夹)

    判断一个路径是否存在 判断一个文件是否存在 判断一个目录是否存在 在路径存在的情况下,文件和目录(文件夹)是互斥的...

  • leetCode112:Path Sum

    关键字:树、深度优先搜索 难度:easy 题目大意:从给定的二叉树中,查找是否存在root->leaf路径和等于s...

  • turtle Floyd-Warshall(Graph)

    最短路径算法 Floyd-Warshall(打开新窗口)的算法是用来寻找具有正负边权重的加权图中的最短路径。该算法...

  • [HDFS] 文件系统的小文件判定和合并问题

    1 判定是否有小文件存在 分析:<1> 判定当前路径是否存在以及当前路径是目录而不是某具体文件。<2> Remo...

  • LeetCode 栈、队列、优先队列专题 5:广度优先遍历和图的

    在图中进行广度优先遍历(BFS),进而寻找最短的路径。 例:LeetCode 第 279 题:完全平方式 传送门:...

网友评论

      本文标题:1971. 寻找图中是否存在路径(难度:简单)

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