#P1497. 2024.8.21-秋招-第1题-数据重删

2024.8.21-秋招-第1题-数据重删

视频讲解

一、数据重删

数据重删是一种节约存储空间的技术,通常情况下,在数据存储池内是有很多重复的数据库。重删则是将这些重复的数据块找出并处理的技术。简单地说重删,就是将NN份重复的数据快仅保留11份,并将N1N-1份数据的地址指针指向唯一的那一份。

我们输入一串存储的数据,用NN表示数据个数,用KK标识号数据库的大小,设计一个方法判断当前数据块是否和前面的数据库有重复,两个数据库内容完全一样则表示重复。如果重复则将这个数据库删除,并且在第一个出现数据库的后面增加重复数据的计数,输出经过重复之后的内容。

解答要求

时间限制:C/C++1000msC/C++ 1000ms,其他语言 2000ms2000ms

内存限制:C/C++256MBC/C++ 256MB, 其他语言512MB512MB

输入

8输入数据的个数

2数据块的大小

1 2 3 4 1 2 3 4依次是数据值

输出

1 2 2 3 4 2输出结果为去除重复数据后的结果,输出结果最后没有空格,以数字结尾,输出内容不改变输入数据库的顺序

样例1

输入

8
2 
1 2 3 4 1 2 3 4

输出

1 2 2 3 4 2 

解释

总共88个数据,数据库的大小为22,按新窗口进行切片表示一个数据块,分别得到数据库为[1,2],[3,4],

[1,2],[3,4]其中第一个数据块和第三个数据块相同,第二个数据块和第四个数据块相同,可以分别进行重测,重测之后数据库[1,2][1,2]的计数变为22,表示有两个相同的数据块[1,2][1,2],同理[3,4][3,4]d的数据块计数性变为22

样例2

输入

8
3
3 4 5 3 4 5 5 4 

输出

3 4 5 2 5 4 1