380. O(1) 时间插入、删除和获取随机元素
最复杂的部分最简单来思考,其他的部分来弥补
class RandomizedSet {
public:vector<int> nums;unordered_map<int,int> mp;RandomizedSet() {}bool insert(int val) {if(mp.count(val)){return false;}else{mp[val] = nums.size();nums.push_back(val);return true;}}bool remove(int val) {if(mp.count(val)){int idx = mp[val];int swapTemp = nums.back();int swapIdx = mp[swapTemp];swap(nums[idx],nums[swapIdx]);mp[swapTemp] = idx;nums.pop_back();mp.erase(val);return true;}else{return false;}}int getRandom() {int n = nums.size();return nums[rand() % n];}
};