被要求使用Get和Put创建一个Key / Value对,它具有恒定的时间复杂度。键是长度为5的字符串,值为object。
也没有哈希功能(HashMap,HashSet,HashTable或其他)它有冲突。
有什么建议吗?
答案 0 :(得分:0)
如果您不使用哈希函数,则常数时间更难。最简单的方法是,如果您可以将密钥限制为足够小的整数值集,则可以使用直接索引的大型数组。否则一个具有足够大N的N-ary树,与可能的键数相比,对数行为基本上是常数。如果可能的键的实际数量相对较小,那么你可以使用一棵树结构并考虑搜索那个正式对数的树的几个步骤,实际上是不变的。
如果
“密钥是长度为5的字符串
表示长度为5的字节字符串,则该密钥只有40位。但这大约有一千亿个价值,在2016年的PC上对于直接阵列索引来说有点太多了。
限制它的一种方法是要求每个字节是十进制数字的ASCII码。然后只有100 000个不同的键值,并且直接索引数组是可行的。