码迷,mamicode.com
首页 > 编程语言 > 详细

Union-Find算法小结

时间:2015-09-24 10:45:29      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:

对Union Find算法不熟悉,可参看


http://blog.csdn.net/dm_vincent/article/details/7655764

http://blog.csdn.net/dm_vincent/article/details/7769159

个人觉得该博文阐述非常通俗易懂,第二个链接是博主举的几个应用例子。


几个需要思考的问题:

这种算法通常应用于什么场景?怎么用?

如何将问题归约到union-find或者说union的目的是什么?

怎么union,即两个元素满足什么条件时可以union?

>>两个元素有关联



题目

union 什么

union目的

Graph Valid Tree

一条边的两个顶点

若union两个顶点时发现根一样,说明已经在同一棵树中,说明输入graph存在环,非tree;union结束后,计数有多少个不同的根,当且仅当存在一个根时事vaild tree

Subtree Sum

节点同其父节点

将以指定id节点为根的所有节点union在一起,对这个union中的元素值求和

Number of Islands

两个相邻的1元素

union后计数union集合数量(通过计数union数组中根节点数量)

Surrounded Regions

所有从边界可达的O元素union在一起

union完成后那些没有在边界可达O集合中的O是需要翻转的



union的目的,Graph 

 技术分享Graph Valid Tree

 

技术分享Subtree Sum 

 

 技术分享Number of Islands

 

 https://leetcode.com/problems/surrounded-regions/

此题debug了很久,一个20*20的case 总是通不过,原因是oRoot的rank值设置得不够大,

会被矩阵中的其他元素超过从而oRoot不再是oRoot导致整个矩阵的O将全部被改为X。

技术分享Surrounded Region 

Union-Find算法小结

标签:

原文地址:http://www.cnblogs.com/googlerla/p/4831239.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!