文章目录
原题题目

代码实现(首刷自解)
class RandomizedSet {
public:
/** Initialize your data structure here. */
unordered_map<int,int> map;
vector<int> v;
RandomizedSet() { }
/** Inserts a value to the set. Returns true if the set did not already contain the specified element. */
bool insert(int val) {
if(map.find(val) != map.end()) return false;
v.emplace_back(val);
map[val] = v.size()-1;
return true;
}
/** Removes a value from the set. Returns true if the set contained the specified element. */
bool remove(int val) {
if(map.find(val) == map.end()) return false;
swap(v[map[val]],v[v.size()-1]);
v.pop_back();
map[v[map[val]]] = map[val];
map.erase(map.find(val));
return true;
}
/** Get a random element from the set. */
int getRandom() {
int pos = rand()%v.size();
return v[pos];
}
};
/** * 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(); */
还没有评论,来说两句吧...