美文网首页
Union-Find

Union-Find

作者: MrWheat | 来源:发表于2018-09-13 10:58 被阅读0次

261. Graph Valid Tree

Given n nodes labeled from 0 to n-1 and a list of undirected edges (each edge is a pair of nodes), write a function to check whether these edges make up a valid tree.
Example 1:
Input: n = 5, and edges = [[0,1], [0,2], [0,3], [1,4]]
Output: true
Example 2:
Input: n = 5, and edges = [[0,1], [1,2], [2,3], [1,3], [1,4]]
Output: false
Note: you can assume that no duplicate edges will appear in edges. Since all edges are undirected, [0,1] is the same as [1,0] and thus will not appear together in edges.

public class Solution {
    public boolean validTree(int n, int[][] edges) {
        // initialize n isolated islands
        int[] nums = new int[n];
        Arrays.fill(nums, -1);
        
        // perform union find
        for (int i = 0; i < edges.length; i++) {
            int x = find(nums, edges[i][0]);
            int y = find(nums, edges[i][1]);
            
            // if two vertices happen to be in the same set
            // then there's a cycle
            if (x == y) return false;
            
            // union
            nums[x] = y;
        }
        
        return edges.length == n - 1;
    }
    
    int find(int nums[], int i) {
        if (nums[i] == -1) return i;
        return find(nums, nums[i]);
    }
}

注意:并查集可以解决父节点,环路等问题,nums里面存的是每个结点的父节点,找的时候一直寻找到底就可以找到最高的父节点。

相关文章

  • Union-Find

    261. Graph Valid Tree Given n nodes labeled from 0 to n-1...

  • Union-Find

    Dynamic connectivity Quick-find Quick-union [lazy approac...

  • Union-Find

    目录页:我的algs4之旅 Union-Find是Algorithms, Part I第一周的第二部分。该部分的编...

  • union-find

    问题: 输入数据必须为(0,n)?输入数据是(0-n),初始化的时候会把id[]中的值赋值为(0-n)的数 uni...

  • Union-Find

    用于解决动态连通图的连接性问题 问题描述 给定由N个对象构成的集合,并告知哪些对象之间是连通的,由此判断某两个对象...

  • Union-Find

    Quick Find 数组的每个位置存相应的节点id,相连接的节点的位置存相同的id。判断是否相连(connect...

  • 8.16 - hard - 59

    305. Number of Islands II 一道union-find的题目,这类题目只要找准谁是boss就...

  • Union-Find算法

    动态连通性问题中,如何判断触点是否相连接,可以抽象表述为如何编写程序来过滤掉序列中所有无意义的整数对。连通性问题只...

  • union-find算法

    Api: 加权quick-union算法:将小数的根节点连接到大树的根节点 最优解法:路径压缩的加权quick-u...

  • union-find 算法

    1、前言 union-find 为并查集算法,原本的用途是判断图的连通性问题,连通性是指图中的两个节点是否相连。说...

网友评论

      本文标题:Union-Find

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