2023每日刷题(五十七)
Leetcode—380.O(1) 时间插入、删除和获取随机元素
算法思想
实现代码
class RandomizedSet {
public:vector<int> nums;unordered_map<int, int> dict;RandomizedSet() {srand((unsigned)time(NULL));}bool insert(int val) {if(dict.find(val) != dict.end()) {return false;}nums.push_back(val);int idx = nums.size() - 1;dict[val] = idx;return true;}bool remove(int val) {if(dict.find(val) == dict.end()) {return false;}int idx = dict[val];int last = nums.back();// 用最后元素代替被删除元素nums[idx] = last;dict[last] = idx;nums.pop_back();dict.erase(val);return true;}int getRandom() {int n = nums.size();int pos = rand() % n;return nums[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();*/
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!