Leetcode684 冗余连接

本想是dfs一下判断有没有环的,不过发现是双向边,而且有N条,说明有一条边是多余的,直接用kruskal算法比较方便。

code

class Solution {
    
    

    int[] par;
    public int[] findRedundantConnection(int[][] edges) {
    
    
        int num = edges.length;
        par = new int[num + 1];
        for (int i = 1; i <= num; i++) {
    
    
            par[i] = i;
        }

        for (int i = 0; i < num; i++) {
    
    
            int u = edges[i][0];
            int v = edges[i][1];
            if (find(u) != find(v)){
    
    
                union(u, v);
            }else{
    
    
                return edges[i];
            }
        }
        return new int[0];
    }

    private int find(int x){
    
    
        return par[x] == x? x:(par[x] = find(par[x]));
    }

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

猜你喜欢

转载自blog.csdn.net/weixin_50070650/article/details/112553073