380. O(1) 时间插入、删除和获取随机元素

380. O(1) 时间插入、删除和获取随机元素


题目链接:380. O(1) 时间插入、删除和获取随机元素

代码如下:

cpp 复制代码
class RandomizedSet {
public:
    vector<int> arr;
    unordered_map<int,int> m;

public:
    RandomizedSet() {

    }
    
    bool insert(int val) {
        if(m.find(val)!=m.end())
            return false;

        arr.push_back(val);
        m[val]=arr.size()-1;
        return true;
    }
    
    bool remove(int val) {
        if(m.find(val)==m.end())
            return false;
        
        int valPos=m[val];
        arr[valPos]=arr[arr.size()-1];
        m[arr[valPos]]=valPos;
        arr.pop_back();
        
        m.erase(val);
        return true;
    }
    
    int getRandom() {
        return arr[rand()%arr.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();
 */
相关推荐
一只搬砖的猹30 分钟前
cjson——excel转json文件(python脚本转换)
c++·人工智能·python·单片机·物联网·json·excel
冀晓武1 小时前
C++ 设计模式:命令模式(Command Pattern)
c++·设计模式·命令模式
唐棣棣3 小时前
期末速成C++【知识点汇总完】
开发语言·c++
belldeep5 小时前
C++:Windows 多线程 简单示例
c++·多线程·thread
捕鲸叉5 小时前
C++软件设计模式之中介者模式
c++·设计模式·中介者模式
一线灵5 小时前
跨平台游戏引擎 Axmol-2.3.0 发布
c++·游戏引擎·wasm·cocos2d·axmol
捕鲸叉5 小时前
C++软件设计模式之模板方法模式
c++·设计模式
爱干饭的boy6 小时前
教师管理系统
java·开发语言·c++·windows·python·青少年编程
OTWOL6 小时前
【单链表】 OJ 练习题精选
c语言·开发语言·数据结构·c++·算法
是wzoi的一名用户啊~7 小时前
[wzoi]Help Bubu
开发语言·c++·算法