并查集
cc 提升ing 变优秀ing
有需要搜广推nlp实习生的部门吗?
展开
-
leetcode:面试题 10.02. 变位词组(中等,为什么不用并查集)
题目:分析:想到两个思路,一个是排序。然后使用哈希表。map一个是并查集。这个题就可以使用排序+哈希。因为属于哪一个类一看就看出来了。而并查集问题一般给集合,所以不能用上述方法。代码:排序,哈希:class Solution {public: vector<vector<string>> groupAnagrams(vector<string>& strs) { vector<vector<string>原创 2021-01-11 12:06:02 · 167 阅读 · 0 评论 -
洛谷:P5836 [USACO19DEC]Milk Visits S(树,最近公共祖先,并查集)
题目:分析:最近公共祖先过程中修改即可。代码:自己写的上面修改,超时:#include<bits/stdc++.h>using namespace std;int m1,m2,n;vector<vector<int> > vv;int A1[100005];//存放的是祖先结点int A2[100005];//存放的是所在的层数。 int A3[100005];//存放的是确定树的时候是否被用过string ss;void f1(int c,in原创 2020-09-05 23:19:07 · 295 阅读 · 0 评论 -
洛谷:P1621 集合(素数相关)
题目:分析:虽然我第一次想就想到了,而且和题解差不多,但是在写代码过程中,漏洞百出,体现出自己错误+垃圾的代码水平。代码:#include<bits/stdc++.h>using namespace std;int A[100005];int main(){ memset(A,-1,sizeof(A)); for(int i=2;i<=100001;i++) { if(A[i]!=-1) continue; for(int j=2;j*i<=100004原创 2020-08-28 22:47:19 · 227 阅读 · 0 评论 -
洛谷:P2814 家谱(普及/提高-,并查集)
题目:分析:既然出到了并查集这里,我想到的就是在模板上进行修改。体会到了并查集模板代码的一个精华特点:我存放的值可以不是最终结果,也没必要是最终结果,我可以查就行啦。代码:#include<bits/stdc++.h>using namespace std;map<string,int> m;string A[50005];int cnt=1;string ss;string f(string s){ if(s==A[m[s]]) return s; re原创 2020-08-28 10:21:49 · 351 阅读 · 0 评论 -
洛谷:P1536 村村通(并查集,普及/提高-)
题目:分析:在模板代码上进行修改,因为遇到-1就是新的集合。不多说了。代码:#include<bits/stdc++.h>using namespace std;int A[5005];int ans=0;int f(int x)//求x的代表元素 { if(A[x]==-1) { A[x]=x; ans++; return x; } if(A[x]==x) return x; return A[x]=f(A[x]);}int main(){ m原创 2020-08-27 16:07:24 · 186 阅读 · 0 评论 -
洛谷:P1551 亲戚(普及-,并查集模板题)
题目:分析:一道最基础的并查集。直接看看题解吧,用什么数据结构。嗯,知道为什么自己在力扣上超时了。因为其实一个数组就可以实现所谓集合的合并。A[x】表示,x结点的代表元素(题解中都说是父节点,)再分析:强调:不能做到实时更新。但是有更新的必要,不用一个一个的挨着遍历了。代码:#include<bits/stdc++.h>using namespace std;int A[5005];int f(int x)//求x的代表元素 { if(A[x]==-1) {原创 2020-08-27 12:11:20 · 223 阅读 · 0 评论 -
leetcode:面试题 17.07. 婴儿名字(并查集,代码超时了)
题目:分析:并查集。我用python写的,1.创建一个二维列表,然后每个列表中的元素都只有一个,为每个名字。2.查synonyms,匹配的名字对应的列表合并。3.排序,求和。竟然超时了,这道题拖了10天,答案也不好,放弃了。代码:def trulyMostPopular(self, names: List[str], synonyms: List[str]) -> List[str]: # 首先为每一个名字创建一个列表 m = {} l2 = [[]for原创 2020-07-01 20:21:23 · 288 阅读 · 0 评论