138. 24年8月-华为国内-1.数据重删
难度 5- 标签:
题目描述
题解
题库
24年8月-华为国内-1.数据重删
题目内容
数据重删是一种节约存储空间的技术,通常情况下,在数据存储池内是有很多重复的数据块。重删则是将这些重复的数据块找出并处理的技术。简单地说,重删就是将N份重复的数据块仅保留1份,并将N-1份数据的地址指针指向唯一的那一份。
我们输入一串存储的数据,用N表示数据个数,用K表示数据块的大小,设计一个方法判断当前数据块是否和前面的数据块有重复,两个数据块内容完全一样则表示重复。如果重复则将这个数据块删除,并且在第一个出现数据块的后面增加重复数据的计数,输出经过重删之后的内容。
解答要求
时间限制:C/C++ 1000ms,其他语言2000ms
内存限制:C/C++ 256MB,其他语言512MB
输入描述
- 8输入数据的个数
- 2数据块的大小
- 1 2 3 4 1 2 3 4依次是数据值
输出描述
输出结果为去除重复数据后的结果,输出结果最后没有空格,以数字结尾,输出内容不改变输入数据块的顺序。
样例1
输入
8
2
1 2 3 4 1 2 3 4
输出
1 2 2 3 4 2
解释 总共8个数据,数据库的大小为2,按新窗口进行切片表示一个数据块,分别得到数据库为 [1,2], [3,4], [1,2], [3,4]。其中第一个数据块和第三个数据块相同,第二个数据块和第四个数据块相同,可以分别进行重删,重删之后数据块 [1,2] 的计数变为2,表示有两个相同的数据块 [1,2],同理 [3,4] 的数据块计数性变为2。
样例2
输入
8
3
3 4 5 3 4 5 5 4
输出
3 4 5 2 5 4 1