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();
     */
  • 相关阅读:
    690. 员工的重要性
    91. 解码方法
    153. 寻找旋转排序数组中的最小值
    81. 搜索旋转排序数组 II
    33. 搜索旋转排序数组
    80. 删除有序数组中的重复项 II
    5708. 统计一个数组中好对子的数目
    高精度除法
    易闻app
    2021.4.13
  • 原文地址:https://www.cnblogs.com/JTechRoad/p/9092838.html
Copyright © 2011-2022 走看看