![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
_amnesia_
这个作者很懒,什么都没留下…
展开
-
leetcode 839. 相似字符串组
题解 题意为:找到能交换两个字符或者相同的就在一组,如果一堆中只有一个符合这样的条件就在这个堆中,即AB满足条件 BC满足条件那么ABC就在一堆中。 并查集,先查找 再合并到一个堆中。 这里学习到一个点就是标记的时候都可以用数字标记,只要符合条件即可,用什么标记都行。 代码 class Solution { public: int pre[1005]; void init(int n,vector<string>& strs){ for(int i = 0原创 2021-01-31 11:26:06 · 151 阅读 · 2 评论 -
leetcod 947. 移除最多的同行或同列石头
题解 有些想法,图也画出,但总以为是规律,但其实是算法 并查集 之前并查集已经学过,可以翻看我的博客~ 如果是深入理解可以理解为bfs或dfs 如果是行相同或者列相同,那么就进行合并,把他们合并为一个连通分支中去,最后查找的是独立的分量即 总点数-连通分支数,因为每个分支都会剩下一个,剩下的就是连通分支数,总点数-连通分支数即为要留下的数量 代码 class Solution { public: int pre[1005]; void init(int n){ for(int i = 0; i &l原创 2021-01-15 16:20:01 · 89 阅读 · 0 评论 -
并查集学习
并查集 看的很好的博文 链接如下 https://blog.csdn.net/chen134225/article/details/82052537 两个函数 1.查找 int pre[1000]; int find(int x)//查找x的顶级 { int r = x; while (pre[r] != r)//当r的上级是他自己,那么r就是顶级 { r = pre[r]; return r; } } 2.合并 void join(int原创 2021-01-12 19:26:16 · 93 阅读 · 1 评论