class RandomizedSet {
private:
vector<int> dyArray;
unordered_map<int,int> hash;
public:
RandomizedSet() {
}
bool insert(int val) {
if(hash.count(val)) return false;
dyArray.push_back(val);
hash[val]=dyArray.size()-1;
return true;
}
bool remove(int val) {
if(!hash.count(val)) return false;
int last=dyArray.back();
hash[last]=hash[val];
dyArray[hash[val]]=last;
dyArray.pop_back();
hash.erase(val);
return true;
}
int getRandom() {
return dyArray[rand()%dyArray.size()];
}
};
/**
* Your RandomizedSet object will be instantiated and called as such:
* RandomizedSet* obj = new RandomizedSet();
* bool param_1 = obj->insert(val);
* bool param_2 = obj->remove(val);
* int param_3 = obj->getRandom();
*/
09-07
06-06
230
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)