考虑一个数组大小为N = 1500个槽的哈希表。哈希表存储来自范围[1000000,1001500]的1400个整数。给一个哈希函数,保证不会发生冲突?
我不明白,如果元素不同,你怎么能这样做?如果他们是不同的那么是的HashKey =整数你完成了吗?
答案 0 :(得分:0)
如上所述,我不相信你可以解决这个问题。您有1501个可能的候选项目可以容纳1500个桶,所以除非您对输入集有所了解,否则您无法为其创建哈希值。
如果您提前知道即使在1400中不存在的一个特定项目,问题也变得微不足道。
template <int MISSING_ITEM>
int hash(int input)
{
if(MISSING_ITEM != 1001500 && input == 1001500)
{
input = MISSING_ITEM;
}
return input - 1000000
}