
Union Find
iteye_17352
这个作者很懒,什么都没留下…
展开
-
Leetcode - 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. For example: Given n = 5 ...原创 2015-09-02 08:50:37 · 309 阅读 · 0 评论 -
Leetcode - Number of Islands
[分析] BFS & DFS法详见实现。 这里阐述下union-find思路,思路很直接,我们需要把相连在一起的1union起来,最后数下union了多少个集合1。输入时一个m*n矩阵,union-find相应地需要一个二维数组保存信息,采用按秩求并方法,初始时每个1元素的秩为-1,0元素不参与union,记为0。扫描数组,对于(i,j)元素,查看其是否需要同右边和下边相邻元素合并,其上边和左...原创 2015-09-02 09:40:16 · 112 阅读 · 0 评论 -
Leetcode - Surrounded Regions
[分析] 思路1:和Number of Islands类似,但是此题用DFS会栈溢出,因此使用BFS。从四个边缘的元素开始BFS, 遇到 O 改成特殊字符M,最后没有被修改的O就是被X包围的,应当改为X, 并且把M恢复成O即可。 BFS搜索时队列中维护的是所有未展开BFS的 O,队列记录这些 O的位置。 思路2:利用union find算法,将所有边界可达的O union在一起。设置一个根节...原创 2015-09-02 13:41:38 · 136 阅读 · 0 评论 -
Lowest Common Ancestor of A Binary Tree
[分析] 最近公共祖先(LCA)是一个经典问题,以前没有好好研究过这个问题,不知道还有个Tarjan算法,今天开了眼界。一般有两种方法分别适用不同场景: 1)递归算法,适合在线单次查询,如本题; 2)Tarjan算法,适合批量查询,输入是一颗树和N对定点,为每个顶点(u,v)确定LCA。 有兴趣的同学看参考[url]https://github.com/julycoding/The-Ar...原创 2015-09-26 11:39:35 · 110 阅读 · 0 评论