381. Insert Delete GetRandom O(1) - Duplicates allowed
来源:互联网 发布:如何查看淘宝产品排名 编辑:程序博客网 时间:2024/05/22 12:01
使用unordered_map和unordered_set存取
class RandomizedCollection {public: /** Initialize your data structure here. */ RandomizedCollection() { mp.clear(); } /** Inserts a value to the collection. Returns true if the collection did not already contain the specified element. */ bool insert(int val) { bool flag=true; if(mp.find(val)!=mp.end()) flag=false; vec.push_back(val); mp[val].insert(vec.size()-1); return flag; } /** Removes a value from the collection. Returns true if the collection contained the specified element. */ bool remove(int val) { if(mp.find(val)==mp.end()) return false; unordered_set<int>::iterator it=mp[val].begin(); if(vec[vec.size()-1]!=val) { int tail=vec[vec.size()-1]; vec[*it]=tail; mp[tail].erase(vec.size()-1); mp[tail].insert(*it); } vec.pop_back(); mp[val].erase(*it); if(mp[val].size()==0) mp.erase(val); return true; } /** Get a random element from the collection. */ int getRandom() { return vec[rand()%vec.size()]; }private: unordered_map<int,unordered_set<int>> mp; vector<int> vec;};/** * Your RandomizedCollection object will be instantiated and called as such: * RandomizedCollection obj = new RandomizedCollection(); * bool param_1 = obj.insert(val); * bool param_2 = obj.remove(val); * int param_3 = obj.getRandom(); */
0 0
- Insert Delete GetRandom O(1) - Duplicates allowed
- Insert Delete GetRandom O(1) - Duplicates allowed
- Insert Delete GetRandom O(1) - Duplicates allowed
- LeetCode—381. Insert Delete GetRandom O(1) - Duplicates allowed
- [leetcode] 381. Insert Delete GetRandom O(1) - Duplicates allowed
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
- <leetcode>381. Insert Delete GetRandom O(1) - Duplicates allowed
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
- LeetCode 381. Insert Delete GetRandom O(1) - Duplicates allowed
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
- 【Leetcode】Insert Delete GetRandom O(1) - Duplicates allowed
- leetcode之Insert Delete GetRandom O(1) - Duplicates allowed
- 151.Insert Delete GetRandom O(1) - Duplicates allowed
- LeetCode Insert Delete GetRandom O(1) - Duplicates allowed
- Insert Delete GetRandom O(1) - Duplicates allowed in JAVA
- 关于MySql Left Join
- 提高iOS开发效率的方法和工具
- Mybatis框架学习笔记 lesson2
- Cocoapods相关
- asp.net通过MySql.Data.DLL方式使用mysql
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
- java中StringBuilder、StringBuffer、String类之间的关系
- 应用内存优化之OnLowMemory&OnTrimMemory
- Unity YAML 序列化与反序列化
- 博客新手,试试图片上传功能
- TCP/IP之九:UDP用户数据包协议
- CCF-201312-1-出现次数最多的数
- 解析json
- C++ 公有继承的注意要点