你有一个通讯录,这个通讯录里每个联系人都包含姓名和手机号,一个联系人可能有多个手机号。
如果发现两个联系人拥有相同的手机号,我们就认为他们是同一个人。
你的任务就是整理这个通讯录,将具有相同手机号的联系人合并为一个联系人,并返回合并后的通讯录列表。
你有一个通讯录,其中每个联系人包含姓名和多个手机号。如果两个联系人拥有相同的手机号,认为他们是同一个人,需要将其合并。如果合并时发现姓名不同,则保留字典序较小的姓名。通讯录中记录的手机号最多有10个,且每个手机号由1到10位数字组成。输入第一行为记录数量,接下来每行为一条联系人记录,包含姓名和若干手机号,手机号之间用空格隔开。输出时,整理后的通讯录需要按姓名字典序排列,同一联系人的手机号也按升序排列。
1.基于共享电话号码的联系人属于同一组的思路,我们可以先使用哈希表将电话号码映射到对应的联系人编号列表上,然后使用并查集将共享同一电话号码的联系人合并到同一组。
2.对于并查集里的每个组(用该集合中的root节点编号表示),我们需要找到字典序最小的联系人姓名和该组内的联系人的所有电话号码。