File tree Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Expand file tree Collapse file tree 1 file changed +40
-0
lines changed Original file line number Diff line number Diff line change 1+ class AllOne {
2+ public:
3+ unordered_map<string,int> count;
4+ set<pair<int,string>> se;
5+ AllOne() {
6+ count.clear();
7+ }
8+
9+ void inc(string key) {
10+ int n = count[key];
11+ count[key]++;
12+ se.erase({n,key});
13+ se.insert({n+1,key});
14+ }
15+ void dec(string key) {
16+ int n = count[key];
17+ count[key]--;
18+ se.erase({n,key});
19+ if(count[key] > 0) se.insert({n-1,key});
20+ }
21+
22+ string getMaxKey() {
23+ if(!se.empty()) return se.rbegin()->second;
24+ return "";
25+ }
26+
27+ string getMinKey() {
28+ if(!se.empty()) return se.begin()->second;
29+ return "";
30+ }
31+ };
32+
33+ /**
34+ * Your AllOne object will be instantiated and called as such:
35+ * AllOne* obj = new AllOne();
36+ * obj->inc(key);
37+ * obj->dec(key);
38+ * string param_3 = obj->getMaxKey();
39+ * string param_4 = obj->getMinKey();
40+ */
You can’t perform that action at this time.
0 commit comments