力扣解题思路:并查集

本文介绍了如何利用并查集解决面试题17.07.婴儿名字中的图环路问题。通过建立并查集数据结构,判断节点间的连接状态,当发现环路时移除相应边。在实现过程中,注意字符串数组的处理,以及在合并祖先时选择最小的祖先并更新频率。
摘要由CSDN通过智能技术生成

684. 冗余连接


思路:有一系列的边连成的图,找出一条边,移除它之后该图能够成为一棵树。

Input: [[1,2], [1,3], [2,3]]
Output: [2,3]
Explanation: The given undirected graph will be like this:
  1
 / \
2 - 3

如果移除一条边可以成为一棵树那就意味着这个图存在环路,那么移除这个环的任意边即可(题目要求是最后一条边),所以我们可以使用并查集来记录每个节点的最前前驱节点,也就是父节点,如果两个节点的父节点相同,证明这两个节点是相连的,如果这两个节点不相连,我们可以将其父节点改成相同来使这两个节点连同。现在我们来定义并查集的数据结构:

class DSU{
   
    int[] parent;
    public DSU(int N){
   
        parent = new int[N+1];
        for(int i=0;i<N;i++){
   
            parent[i] = i;
        }
    }
    public int find(int x){
   
        if(parent[x] != x) parent[x] = find(parent[x]);
        return parent[x];
    }
    public void union
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值