你有一个通讯录,这个通讯录里每个联系人都包含姓名和手机号,一个联系人可能有多个手机号。
如果发现两个联系人拥有相同的手机号,我们就认为他们是同一个人。
你的任务就是整理这个通讯录,将具有相同手机号的联系人合并为一个联系人,并返回合并后的通讯录列表。
题目要求我们整理一个通讯录,通讯录中的每个联系人包含姓名和若干个手机号。如果两个联系人有相同的手机号,则认为他们是同一个人,需要将他们合并为一个联系人。在合并时,如果发现姓名不同,则保留字典序较小的姓名,所有手机号合并后按ASCII码升序排列。输入包括通讯录的记录数量num(范围为1到1000),后续每一行表示一个联系人,包含姓名和若干手机号(每个手机号不超过10个,长度为1到10位)。输出要求合并后的联系人列表,并按ASCII码顺序输出姓名及其手机号。
1.基于共享电话号码的联系人属于同一组的思路,我们可以先使用哈希表将电话号码映射到对应的联系人编号列表上,然后使用并查集将共享同一电话号码的联系人合并到同一组。
2.对于并查集里的每个组(用该集合中的root节点编号表示),我们需要找到字典序最小的联系人姓名和该组内的联系人的所有电话号码。