CLRS Problem 11.1-4

Aiur · Zellux at 
简单来说就是给定一个未初始化的巨大的数组,然后通过它实现一个字典。所谓未初始化是指一开始里面元素的值都是随机的,巨大是指可以假设数组长度范围很大,对这个数组做初始化工作(例如清零)的代价自然也是很大。现在的问题是,利用这个数组设计出来的字典,要求初始化、查找、插入、删除操作都能在 O(1)时间内完成。Intructor’s Manual 上的解答设计了一个很巧妙的验证策略。假设 T 为那个巨大的数组,S 为辅助栈,那么对于一个键 k,如果 k 存在于这个字典中,则 T[k]保存的是 k 在 S 中的位置 j,而 S[j]则保存了 k 值。即 1 ≤ T[k] ≤ top[S], S[ T[k]……