首页 > 试题广场 >

会话列表

[编程题]会话列表
  • 热度指数:9822 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

小云正在参与开发一个即时聊天工具,他负责其中的会话列表部分。

会话列表为显示为一个从上到下的多行控件,其中每一行表示一个会话,每一个会话都可以以一个唯一正整数id表示。

当用户在一个会话中发送或接收信息时,如果该会话已经在会话列表中,则会从原来的位置移到列表的最上方;如果没有在会话列表中,则在会话列表最上方插入该会话。

小云在现在要做的工作是测试,他会先把会话列表清空等待接收信息。当接收完大量来自不同会话的信息后,就输出当前的会话列表,以检查其中是否有bug。

输入描述:
输入的第一行为一个正整数T(T<=10),表示测试数据组数。
接下来有T组数据。每组数据的第一行为一个正整数N(1<=N<=200),表示接收到信息的次数。第二行为N个正整数,按时间从先到后的顺序表示接收到信息的会话id。会话id不大于1000000000。


输出描述:
对于每一组数据,输出一行,按会话列表从上到下的顺序,输出会话id。
相邻的会话id以一个空格分隔,行末没有空格。
示例1

输入

3
5
1 2 3 4 5
6
1 100 1000 1000 100 1
7
1 6 3 3 1 8 1

输出

5 4 3 2 1
1 100 1000
1 8 3 6
头像 牛客409434554号
发表于 2022-01-13 03:30:41
既然官方题解都用map了,那说明这题并不限制容器,那我list可就不客气了。输入一直尾插就完事了。 ```#include<bits/stdc++.h> using namespace std; int main() { int t;cin>>t; while 展开全文
头像 牛客题解官
发表于 2020-06-05 16:00:16
题解 题目难度:中等难度 知识点:栈、数组、map 方法(一) 将员工id放入id数组中,构造一个辅助数组,我们依次从id数组的末尾取出数据,当区最末尾数据时,直接打印,并将该数放入辅助数组之中,然后从id数组末尾取下一个数据,与已经放入辅助数组中的数据逐一比较,若没有访问过,打印该数据并且把该数据 展开全文
头像 callmexss
发表于 2019-07-26 15:52:22
当用户在一个会话中发送或接收信息时,如果该会话已经在会话列表中,则会从原来的位置移到列表的最上方;如果没有在会话列表中,则在会话列表最上方插入该会话。 其实就是一个长度无限的 LRU 列表,第一次出现就插入到列表头部,否则先从列表中删除在插入到列表头部。使用 deque 而不使用 list 是因为 展开全文
头像 小谷围做题家
发表于 2023-03-22 10:27:45
package main import ( "fmt" ) func main() { var t int fmt.Scan(&t) var n int for t>0{ fmt.Scan(&n) var x int 展开全文