难度中等33

每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量。有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公布出来。给定两个列表,一个是名字及对应的频率,另一个是本质相同的名字对。设计一个算法打印出每个真实名字的实际频率。注意,如果 John 和 Jon 是相同的,并且 Jon 和 Johnny 相同,则 John 与 Johnny 也相同,即它们有传递和对称性。

在结果列表中,选择 字典序最小 的名字作为真实名字。

示例:

输入:names = ["John(15)","Jon(12)","Chris(13)","Kris(4)","Christopher(19)"], synonyms = ["(Jon,John)","(John,Johnny)","(Chris,Kris)","(Chris,Christopher)"]
输出:["John(27)","Chris(36)"]

提示:

  • names.length <= 100000
class Solution {
public:int f[100001];int rank[100001];void Make_Set(int N){for (int i = 0; i < N; i++){f[i] = i;rank[i] = 1;}}int findF(int x) {return f[x] == x ? x : f[x] = findF(f[x]);}void merge(int x, int y) {int fx = findF(x), fy = findF(y);if (fx == fy) return;if (rank[fx] < rank[fy]) {swap(fx, fy);}rank[fx] += rank[fy];f[fy] = fx;}vector<string> trulyMostPopular(vector<string>& names, vector<string>& synonyms) {int N = names.size();unordered_map<string, int>room;unordered_map<int, string>rroom;vector<int>fre(N);vector<string>res;Make_Set(N);if (names.size() == 0)return res;for (int i = 0; i < N;++i) {int l = names[i].find('(');names[i][l] = '*';int r = names[i].find(')');string name = names[i].substr(0, l);int val = stoi(names[i].substr(l + 1, r - l + 1));;room[name] = i;rroom[i] = name;fre[i] = val;//cout << name << ' ' << fre[i] << endl;}for (auto s : synonyms) {int l = s.find(',');string a = s.substr(1, l - 1);string b = s.substr(l + 1, s.size() - l - 2);merge(room[a], room[b]);//cout << a << ' ' << b << endl;}for (int i = 0; i < N; ++i) {int fa = findF(i);if (fa != i) {if (rroom[i] < rroom[fa]) {rroom[fa] = rroom[i];}fre[fa] += fre[i];}}for (int i = 0; i < N; ++i) {int fa = findF(i);if (i == fa) {string name = rroom[i];int num = fre[i];name += "(" + to_string(num) + ")";//cout << name << endl;res.push_back(name);}}return res;}
};

面试题 17.07. 婴儿名字(并查集模板)相关推荐

  1. 面试题.17.07.婴儿名字--并查集

    LeetCode 面试题 17.07.婴儿名字 每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量.有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被 ...

  2. [LeetCode][C++]面试题 17.07. 婴儿名字/并查集

    面试题 17.07. 婴儿名字 每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量.有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公 ...

  3. LeetCode 面试题 17.07婴儿名字 (并查集+字符串处理+字典序)

    婴儿名字 1600ms,吐了 ,代码看似很长.但主要花在了字符串处理上. string s; s.substring(int idx,int len); //去除子串 stoi(string s); ...

  4. 并查集之面试题 17.07. 婴儿名字

    并查集之面试题 17.07. 婴儿名字 前言 一, 面试题 17.07. 婴儿名字 二,解题思路 1, a和b是朋友, b和c是朋友,那a和c也是朋友.这就是典型并查集类型 2, 字典序 3, 三, ...

  5. 面试题 17.07. 婴儿名字 ( 字符标志 并查集 )

    面试题 17.07. 婴儿名字 字符串并查集: 721. 账户合并 ( 并查集 ) 解题思路: 首先通过哈希表建立并查集,哈希表的键值对都是字符串,然后将一个相连的并查集合并: 利用一个哈希表进行计数 ...

  6. 面试题 17.07. 婴儿名字

    面试题 17.07. 婴儿名字 每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量.有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公 ...

  7. leetcode面试题 17.07. 婴儿名字(并查集)

    每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量.有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公布出来.给定两个列表,一个是名字 ...

  8. 程序员面试金典 - 面试题 17.07. 婴儿名字(并查集)

    1. 题目 每年,政府都会公布一万个最常见的婴儿名字和它们出现的频率,也就是同名婴儿的数量. 有些名字有多种拼法,例如,John 和 Jon 本质上是相同的名字,但被当成了两个名字公布出来. 给定两个 ...

  9. [Leetcode 每日精选](本周主题-并查集) 面试题 17.07. 婴儿名字

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题多了一些变化, 但核心仍然是并查集. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到该系列当前已 ...

最新文章

  1. [转载]商业智能的三个层次
  2. PHP MySQL Update
  3. mailmessage html编码,C#MailMessage顯示HTML標記的AlternateViews
  4. Lawn of the Dead
  5. (一)Rational Rose 2007 下载安装
  6. 【Oracle的存储过程之面向对象之特性】
  7. oracle undoautotune,Oracle 隐藏参数:_undo_autotune、一个吃力不讨好的活
  8. 【机房重构】组合查询--存储过程
  9. BZOJ 1801: [Ahoi2009]chess 中国象棋( dp )
  10. VideoPlayer播放组件详解-Unity使用官方组件播放视频
  11. C++ 信息管理系统
  12. 使用jsp实现成语接龙
  13. 计算机 随机分组的方法,最小化随机分组方法介绍及其SAS实现
  14. Word文档图标变成空白如何恢复
  15. 边缘计算是什么 优点
  16. 实体类[notmapped]特殊 “The specified type member ‘‘ is not supported in LINQ to Entities. Only...
  17. ​金融风控的护航员——聊聊ERNIE在度小满用户风控的应用
  18. 如何打开EPUB文件
  19. 工程伦理学_笔记(复习用)
  20. 【WebGIS面试经验】(一)本以为没戏却成功了的面试

热门文章

  1. c语言背单词系统.doc,背单词系统
  2. oracle可以抵扣个税吗,好消息!用这种方式,个人所得税可以抵扣了!
  3. 苹果电脑Xcode快速打开苹果模拟器
  4. 商业研究(21):活力蛙,足疗O2O,曾经的“中国上门足疗领先品牌”
  5. 什么? 你还没用过 Cursor? 智能 AI 代码生成工具 Cursor 安装和使用介绍
  6. vat可以退税吗_英国VAT退税流程以及VAT退税政策
  7. 计算机硬件造型,无奇不有!带你见识一下那些造型独特的电脑
  8. BZOJ 1933 Shoi2007 Bookcase 书柜的尺寸
  9. HCIE 第五天总结
  10. 智能家居实训(华清远见)第六天