https://leetcode.com/problems/accounts-merge/description/

class UnionFound {
public:
unordered_map<int,int> parents;
int cnt = ;
void AddItem(int i) {
parents[i] = i;
cnt++;
}
int GetParent(int i) {
if (parents[i] == i) return i;
return parents[i] = GetParent(parents[i]);
}
void Union(int p, int c) {
int pp = GetParent(p);
int cp = GetParent(c);
if (pp != cp) {
parents[cp] = pp;
cnt--;
}
}
};
class Solution {
public:
vector<vector<string>> accountsMerge(vector<vector<string>>& accounts) {
UnionFound uf;
for (int i = ; i < accounts.size(); i++)
uf.AddItem(i); unordered_map<string, int> map_email_to_person;
for (int i = ; i < accounts.size(); i++)
for (int j = ; j < accounts[i].size(); j++) {
const auto& email = accounts[i][j];
if (map_email_to_person.count(email)) {
uf.Union(map_email_to_person[email], i);
}
else {
map_email_to_person[email] = i;
}
} unordered_map<int, set<string>> map_person_to_emails;
for (int i = ; i < accounts.size(); i++) {
int person = uf.GetParent(i);
for (int j = ; j < accounts[i].size(); j++) {
const auto& email = accounts[i][j];
map_person_to_emails[person].insert(email);
}
} vector<vector<string>> res;
for (const auto& it : map_person_to_emails) {
vector<string> p;
p.push_back(accounts[it.first][]);
for (const auto & email : it.second)
p.push_back(email);
res.push_back(p);
}
return res;
}
};

最新文章

  1. Oracle 11.2.0.4 DataGuard 环境打PSU,OJVM PSU补丁快速参考
  2. C#入门基础二
  3. ACM/ICPC 之 数论-费马大定理(HNUOJ 13371)
  4. 记一次奇怪IE动态加载js的乱码
  5. Android遇到的错误记录
  6. [ CodeVS冲杯之路 ] P1165
  7. 【MongoDB数据库】怎样安装、配置MongoDB
  8. 这样就算会了PHP么?-9
  9. 一些不熟悉的SQL脚本--约束条件
  10. 网易云课堂_C语言程序设计进阶_第5周:链表
  11. RFID射频卡超市购物结算系统问题记录--写入卡片时,后台php无法操作数据库
  12. (102, &quot;Incorrect syntax near &#39;-&#39;.DB-Lib error message 102, severity 15:\nGen
  13. ubuntu sendmail配置发送邮件
  14. FindBugs简单应用
  15. 判断一个jquery对象是否为空
  16. 装 ubuntu + win10 出现 grub rescue 并处理之
  17. SSH架构实现在线支付功能
  18. linux文件权限总结(创建root不可以删除文件、只可追加的日志文件等)
  19. 关于Vue(旅游APP)的一些总结点
  20. Python-collections模块-57

热门文章

  1. sql server sql语句
  2. xml 文件转化Dictionary
  3. Spring相关理解
  4. 用python计算直角三角形斜边长
  5. socket网络套节字---聊天室
  6. 用C#来控制高级安全Windows防火墙
  7. apache日志设置
  8. Java interface和abstract小记
  9. 300行ABAP代码实现一个最简单的区块链原型
  10. 【挖坑】2019年JAVA安全总结:SQL注入——新项目的开发与老项目的修复