zoukankan      html  css  js  c++  java
  • 380. Insert Delete GetRandom O(1)

    class RandomizedSet {
    public:
        vector<int> data;
        unordered_map<int,int> m;   // <val,index in data vector>
        /** Initialize your data structure here. */
        RandomizedSet() {
            
        }
        
        /** Inserts a value to the set. Returns true if the set did not already contain the specified element. */
        bool insert(int val) {
            if (m.count(val))   return false;
            m[val] = data.size();
            data.push_back(val);
            return true;
        }
        
        /** Removes a value from the set. Returns true if the set contained the specified element. */
        bool remove(int val) {
            if (!m.count(val))   return false;
            int idx = m[val];
            m[data.back()] = idx;
            data[idx] = data.back();
            m.erase(val);
            data.pop_back();
            return true;
        }
        
        /** Get a random element from the set. */
        int getRandom() {
            return data[rand() % data.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();
     */
  • 相关阅读:
    转换进制,十六进制数相加
    一个人的旅行(Dijkstra算法)
    畅通工程续(Dijkstra算法)
    免费书下载
    http://d3js.org/
    React.js model
    jtable更新数据
    java knowledge record
    ActionListener三种实现
    java接口理解(转载)
  • 原文地址:https://www.cnblogs.com/JTechRoad/p/9092838.html
Copyright © 2011-2022 走看看