某种聊天工具,每个好友的id都是唯一的,当用户接收到信息后,如果会话窗口之前没有与该好友的聊天信息,则在通信列表里,会将新接收的消息的好友id置顶,如果会话窗口中已有与该好友的聊天信息,则将该好友的id移动到通讯列表的顶端。请根据要求实现该功能。 输入:第一行为整数N,代表有N组测试数据,接下来的N组测试中,第一行为整数T,代表有T条通讯,第二行有T个整数,按时间先后顺序表示接收到讯息的好友id。 输出:按照通讯列表从上到下的顺序输出好友id,每个id以空格分隔。
时间: 2024-02-22 18:00:50 浏览: 140
这道题目需要使用一个数据结构来保存通讯列表中的好友id,并且要保证已有的好友id能够被快速查找到。
可以使用Python自带的列表和字典来实现,具体实现方法如下:
```python
N = int(input())
for i in range(N):
T = int(input())
msg_list = list(map(int, input().split()))
friend_dict = {}
friend_list = []
for friend_id in msg_list:
if friend_id in friend_dict:
friend_list.remove(friend_id)
friend_list.insert(0, friend_id)
friend_dict[friend_id] = True
print(' '.join(map(str, friend_list)))
```
首先输入测试数据的组数N,然后对于每组测试数据,输入好友id的个数T和T个好友id。
接下来,我们使用一个字典friend_dict来保存当前通讯列表中已有好友id,以便快速查找。同时,我们使用一个列表friend_list来保存当前的通讯列表,列表的第一个元素即为最新的好友id。
接着,我们遍历每个好友id,如果该好友id已经在当前通讯列表中,就将其从列表中移除。然后将其插入到列表的第一个位置,同时更新字典friend_dict。这样就实现了将已有好友id移到通讯列表顶端的功能。
最后,我们使用join函数将好友id列表转换成字符串,并输出即可。
注意,每组测试数据的输出结果要换行,所以在输出一组测试数据的结果后,要使用print()输出一个空行。
阅读全文