• 547. 省份数量(Medium)
  • 684. 冗余连接(Medium)
  • 题解
class Solution(object):def trulyMostPopular(self, names, synonyms):# 检查是否是同一个父节点,返回父节点def find(x):if x != name_len[x]:name_len[x] = find(name_len[x])return name_len[x]# 合并到同一个父节点def union(x1, x2):res1 = find(name2len[x1])res2 = find(name2len[x2])if len2name[res1] > len2name[res2]:name_len[res1] = res2else:name_len[res2] = res1name_cnt = len(names)name = [s[:s.find('(')] for s in names]name_len = [i for i in range(len(name))] # 初始化并查集,初始化其下标为的父节点name2len = dict(zip(name, name_len)) # 名字:名字长度len2name = dict(zip(name_len, name)) # 名字长度:名字for pair in synonyms:pair = pair[1:-1].split(',')# 若第一个名字在字典中没有找到,则进行添加记录,表示添加一个新的名字if name2len.get(pair[0], -1) == -1:name2len[pair[0]] = name_cnt # 在name2len中添加记录len2name[name_cnt] = pair[0] # 在len2name中添加记录name_len.append(name_cnt)    # 在name_len中添加长度记录name_cnt += 1                # 已有的名字数量加一# 若第二个名字在字典中没有找到,同上if name2len.get(pair[1], -1) == -1:name2len[pair[1]] = name_cntlen2name[name_cnt] = pair[1]name_len.append(name_cnt)name_cnt += 1union(pair[0], pair[1]) # 添加完之后,把他们合并到同一个父节点下res = {}for name in names:idx = name.find('(')nam, name_cnt = name[:idx], int(name[idx+1:-1])fa = len2name[find(name2len[nam])]res[fa] = res.get(fa, 0) + name_cnt # 累加同一个父节点下的数量return [key + '(' + str(val) + ')' for key, val in res.items()]

面试题 17.07. 婴儿名字(Medium)相关推荐

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

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

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

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

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

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

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

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

  5. 面试题 17.07. 婴儿名字

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

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

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

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

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

  8. 程序员面试金典 - 面试题 17.07. 婴儿名字

    题目难度: 中等 原题链接 今天继续更新程序员面试金典系列, 大家在公众号 算法精选 里回复 面试金典 就能看到该系列当前连载的所有文章了, 记得关注哦~ 题目描述 每年,政府都会公布一万个最常见的婴 ...

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

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

  10. 面试题 17.07. 婴儿名字 总结

    1.Set() ES6 提供了新的数据结构 Set.它类似于数组,但是成员的值都是唯一的,没有重复的值.类似于python中的元组. 2.forEach()方法 forEach() 方法用于调用数组的 ...

最新文章

  1. 小程序登录、用户信息相关接口调整说明
  2. 外国小哥恶搞:用ESP32单片机伪装成GPU,让朋友电脑中“勒索病毒
  3. Nginx-从零开始使用nginx实现反向代理及负载均衡
  4. 【网址收藏】WIN10下docker docker-compose docker-machine的安装与使用
  5. .Net 中的序列化与反序列化 (转)
  6. 佟年计算机天才不会打游戏,《亲爱的热爱的》佟年爱得卑微?其实是韩商言,爱得不够勇敢...
  7. python 东哥 with open_python 连接redis cluster
  8. win8oracle10g安装报错,Win8电脑安装Oracle 10g提示程序异常终止的解决方法
  9. AI算法连载19:统计之最大熵算法
  10. mysql8.0.15免安装教程_MySQL8.0.15安装教程(Windows)
  11. unity,生成的mac版游戏切场景时卡死解法
  12. 给linux用户的11个高级MySQL数据库面试问题和答案
  13. Criteo数据集探索
  14. usc2_今天发布:与USC合作的新游戏设计课程
  15. R语言:医药股票数据分析
  16. 跟父母还是要保持一定的距离感
  17. 因特尔显卡自定义分辨率_Win10创建自定义分辨率的方法教程
  18. 浅谈Java的类和封装
  19. threw ‘java.lang.NullPointerException‘ exception // toString()
  20. adb是什么?如何安装配置adb?如何检验是否成功安装adb?

热门文章

  1. 华为鸿蒙最新评测,搭载HarmonyOS出道即王者!华为MatePad Pro 12.6英寸首发评测:逆境发出最强音...
  2. SMT代工质量管控规范
  3. 美图发布区块链白皮书
  4. 如何使用 ADPlus 解决“挂起”和“崩溃”问题
  5. Redash案例之—党建
  6. 9月10日云栖精选夜读 | 马云宣布传承计划
  7. 正当防卫4显示无法连接服务器,《正当防卫4》游戏进不去为什么 游戏进不去解决办法分享...
  8. USART(RS232/422/485)、I2C、SPI、CAN、USB总线
  9. #%#//scriptlet(‘set-constant‘, ‘Document.prototype.browsingTopics‘, ‘undefined‘) trace startVM8278:
  10. ffalcon电视html接口,FFALCON雷鸟新极客智屏,新极客,新选择