#P1880. 构建哈希表
构建哈希表
题目描述
在一个简单的哈希表实现中,对于给定的哈希函数 ,有一长度为 的数组用于存储 的值。
当需要向哈希表插入一个值 时,从数组的下标 开始,向右循环移动,找到第一个未存储该数的位置,写入 。若哈希表已满或 已存在于表中,则不再插入 。
给定 个整数 () 表示哈希表数组中存储的元素, 表示当前位置未写入数据。
请按插入哈希表的顺序输出原序列(假设插入过程中不存在相同的数字),如果有多个满足条件的序列,输出字典序最小的。
输入描述
第一行输入一个正整数 。
第二行输入 个整数 ,含义如题。
输入保证序列为通过线性探测法插入的哈希表结果。(除 外,其它数字两两互不相等。)
输出描述
输出 个非负整数,表示插入哈希表后的原序列,其中 为哈希表中非 的整数个数。
样例1
输入
5
-1 1 -1 3 4
输出
1 3 4
样例解释
由于没有冲突,原序列可以是 的任意一种排列组合,而其中 是所有可能的结果中字典序最小的一种。
样例2
输入
5
9 1 8 3 4
输出
1 3 4 9 8
样例解释
数据插入过程如下:$[-1, -1, -1, -1, -1]\to [-1, 1, -1, -1, -1]\to [-1, 1, -1, 3, -1]\to [-1, 1, -1, 3, 4]\to [9, 1, -1, 3, 4]\to [9, 1, 8, 3, 4]$。
若按 顺序插入,将得到结果 ,与输入不符,因此不存在字典序更小的插入顺序。