数据重删是一种节约存储空间的技术,通常情况下,在数据存储池内是有很多重复的数据库。重删则是将这些重复的数据块找出并处理的技术。简单地说重删,就是将N份重复的数据快仅保留1份,并将N−1份数据的地址指针指向唯一的那一份。
我们输入一串存储的数据,用N表示数据个数,用K标识号数据库的大小,设计一个方法判断当前数据块是否和前面的数据库有重复,两个数据库内容完全一样则表示重复。如果重复则将这个数据库删除,并且在第一个出现数据库的后面增加重复数据的计数,输出经过重复之后的内容。
数据重删是一种用于节约存储空间的技术,旨在识别和处理存储池内的重复数据块。其基本思路是,在多个重复的数据块中仅保留一份,通过地址指针指向这份唯一的数据。给定一组数据及其块的大小,需要设计一个方法判断当前数据块是否与之前的数据库重复。如果发现重复,需将该数据库删除,并在首次出现的数据库后增加重复计数,最终输出处理后的数据内容,格式为以空格分隔的数字,且最后没有空格。输入包括一个整数 N(数据个数)、一个整数 K(数据块大小)及 N 个整数(数据值),输出则为去除重复数据后的结果,例如对于输入 8 2 1 2 3 4 1 2 3 4
,输出为 1 2 2 3 4 2
。
该题的要点是要统计出要多少个数据块,所以先将数组按照大小为k进行分段,并且对每一段进行计数,将相同的数据块一次输出。可以考虑使用map来对数据块计数。计数完毕后,再重新分段遍历数组,当map中存在该数据段时,一次性将其输出,并且将该数据段从map中删除,防止重复输出。