Skip to content

Commit e6e61b4

Browse files
committed
Runtime: 293 ms (Top 11.09%) | Memory: 56.4 MB (Top 33.43%)
1 parent 4813061 commit e6e61b4

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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+
*/

0 commit comments

Comments
 (0)