12.3
设计 RandomPool结构设计一种结构,在该结构中有如下三个功能:
insert(key):将某个key加入到该结构,做到不重复加入。
delete(key):将原本在结构中的某个key移除。
getRandom():等概率随机返回结构中的任何一个key。要求:Insert、delete 和 getRandom 方法的时间复杂度都是 O(1)。
思路getRandom()要随机就要知道这个结构中的元素个数,且保证都存在而删除会导致某个元素消失,这样的话元素不连续,getRandom()会出错因此本题的考点是删除但是使得元素连续解决方案是删除时将该删除元素与最后一个元素换位置,删除最后一个元素,这个就会连续而用O(1)找到元素的方法是hashMap
阅读全文...