實現RandomizedSet 類:
RandomizedSet() 初始化 RandomizedSet 對象
bool insert(int val) 當元素 val 不存在時,向集合中插入該項,并返回 true ;否則,返回 false 。
bool remove(int val) 當元素 val 存在時,從集合中移除該項,并返回 true ;否則,返回 false 。
int getRandom() 隨機返回現有集合中的一項(測試用例保證調用此方法時集合中至少存在一個元素)。每個元素應該有 相同的概率 被返回。
你必須實現類的所有函數,并滿足每個函數的 平均 時間復雜度為 O(1) 。
字節面試遇到過的題
考慮刪除的時候把最后一個數換到當前要刪除的位置
class RandomizedSet {vector<int>v;unordered_map<int,int>mp1;
public:RandomizedSet() {v.clear();mp1.clear();}bool insert(int val) {if(mp1.find(val)==mp1.end()){v.push_back(val);mp1[val]=v.size()-1;return true;}return false;}bool remove(int val) {if(mp1.find(val)!=mp1.end()){int end_num=v.back();v.pop_back();int pos=mp1[val];v[pos]=end_num;mp1[end_num]=pos;mp1.erase(val);return true;}return false;}int getRandom() {int pos=rand()%v.size();return v[pos];}
};