File tree 1 file changed +46
-0
lines changed
scripts/algorithms/A/All Oone Data Structure
1 file changed +46
-0
lines changed Original file line number Diff line number Diff line change
1
+ // Runtime: 293 ms (Top 11.09%) | Memory: 56.4 MB (Top 33.43%)
2
+ class AllOne {
3
+ public:
4
+ map<int ,unordered_set<string>> minmax;
5
+ unordered_map<string,int > count;
6
+ AllOne () {
7
+
8
+ }
9
+
10
+ void inc (string key) {
11
+ int was = count[key]++;
12
+ if (was>0 ) {
13
+ minmax[was].erase (key);
14
+ if (minmax[was].size ()==0 ) minmax.erase (was);
15
+ }
16
+ minmax[was+1 ].insert (key);
17
+ }
18
+
19
+ void dec (string key) {
20
+ int was = count[key]--;
21
+ minmax[was].erase (key);
22
+ if (minmax[was].size ()==0 ) minmax.erase (was);
23
+ if (was-1 ==0 ) {
24
+ count.erase (key);
25
+ }else {
26
+ minmax[was-1 ].insert (key);
27
+ }
28
+ }
29
+
30
+ string getMaxKey () {
31
+ return minmax.size () == 0 ? " " : *minmax.rbegin ()->second .begin ();
32
+ }
33
+
34
+ string getMinKey () {
35
+ return minmax.size () == 0 ? " " : *minmax.begin ()->second .begin ();
36
+ }
37
+ };
38
+
39
+ /* *
40
+ * Your AllOne object will be instantiated and called as such:
41
+ * AllOne* obj = new AllOne();
42
+ * obj->inc(key);
43
+ * obj->dec(key);
44
+ * string param_3 = obj->getMaxKey();
45
+ * string param_4 = obj->getMinKey();
46
+ */
You can’t perform that action at this time.
0 commit comments