Skip to content

Commit 8c403a3

Browse files
authored
Create 380 Insert delete get random O(1).cpp
1 parent 49f1b21 commit 8c403a3

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

380 Insert delete get random O(1).cpp

+38
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
class RandomizedSet {
2+
vector<int> elements;
3+
unordered_map<int,int> val_to_index;
4+
5+
public:
6+
7+
RandomizedSet() {
8+
}
9+
10+
bool contains(int val) {
11+
return val_to_index.find(val)!=val_to_index.end();
12+
}
13+
14+
bool insert(int val) {
15+
if (contains(val))
16+
return false;
17+
18+
elements.push_back(val);
19+
val_to_index[val]=elements.size()-1;
20+
return true;
21+
}
22+
23+
bool remove(int val) {
24+
if (!contains(val))
25+
return false;
26+
27+
auto it=val_to_index.find(val);
28+
elements[it->second]=elements.back();
29+
elements.pop_back();
30+
val_to_index[elements[it->second]]=it->second;
31+
val_to_index.erase(val);
32+
return true;
33+
}
34+
35+
int getRandom() {
36+
return elements[rand()%elements.size()];
37+
}
38+
};

0 commit comments

Comments
 (0)