Description
Design a data structure that supports all following operations in average O(1) time.
1.insert(val): Inserts an item val to the set if not already present.
2.remove(val): Removes an item val from the set if present.
3.getRandom: Returns a random element from current set of elements. Each element must have the same probability of being returned.
Example
|
|
Solution
|
|
Analyse
以前都不太会做这种题,今天仔细想了一下,还是参考了答案写出来。这种来就类似于在面试的时候给你两个队列来实现栈之类的问题,我记得美团和头条都有问过类似的问题,每次都被恶心到了。这里需要的确实是要把每个函数写的很完整没有一点bug。
开始认为可以只使用nums,因为getRandom和insert都只用nums都可以,但是delete就不行,因为nums的remove有问题,因为题目要求的复杂度是O(1),你如果不是最后的数字的话,肯定需要遍历list,这样复杂度就不是O(1)了,所以加一个hashmap一点问题都没有。