我正在开展一个需要找到类似联系人的项目。
I / P:它的形式为
C1 -> abc@gmail.com,xyz@gmail.com ... (could be any size) C2 -> asdas@gmail.com C2 -> friedzie@gmail.com,myfriend@yahoo.com C4 -> brothers@yahoo.com,asdas@gmail.com
我想将C2,C4等联系人分组并将它们合并在一起,因为它们共享相同的电子邮件。
答案 0 :(得分:2)
将地址散列到联系人,当您遇到已存在于散列映射中的地址时,该地址就是共享联系人。
大致为O(N)
编辑:
如果有两个以上具有匹配电子邮件的候选人,则他们都会被分组。
e.g。
C1 A@gmail.com
C1 B@gmail.com
C2 A@gmail.com
C2 C@gmail.com
C3 B@gmail.com
C3 D@gmail.com
现在你知道你需要合并:C2进入C1,C3进入C1。
答案 1 :(得分:0)
我会尝试应用 Union Find 算法。
只要有共同的电子邮件地址,就可以合并容器(即工会)。
请参阅:https://www.cs.princeton.edu/~rs/AlgsDS07/01UnionFind.pdf