1
1
class FreqStack {
2
- Map <Integer , Integer > valueToCurrentFrequency ;
3
- Map <Integer , Stack <Integer >> frequencyToValues ;
4
- int maxFrequency ;
2
+
3
+ private Map <Integer , Integer > frequencyMap ;
4
+ private Map <Integer , Stack <Integer >> frequencyGroup ;
5
+ private int maxFrequency ;
6
+
5
7
public FreqStack () {
6
- valueToCurrentFrequency = new HashMap <>();
7
- frequencyToValues = new HashMap <>();
8
- maxFrequency = 1 ;
8
+ this . frequencyMap = new HashMap <>();
9
+ this . frequencyGroup = new HashMap <>();
10
+ this . maxFrequency = 0 ;
9
11
}
10
12
11
- public void push (int x ) {
12
- valueToCurrentFrequency .put (x , valueToCurrentFrequency .getOrDefault (x , 0 ) + 1 );
13
- frequencyToValues .computeIfAbsent (valueToCurrentFrequency .get (x ), k -> new Stack <>()).add (x );
14
- maxFrequency = Math .max (maxFrequency , valueToCurrentFrequency .get (x ));
13
+ public void push (int val ) {
14
+ int newFrequency = this .frequencyMap .getOrDefault (val , 0 ) + 1 ;
15
+ this .frequencyMap .put (val , newFrequency );
16
+ this .maxFrequency = Math .max (this .maxFrequency , newFrequency );
17
+ this .frequencyGroup .computeIfAbsent (newFrequency , k -> new Stack <>()).push (val );
15
18
}
16
19
17
20
public int pop () {
18
- int val = frequencyToValues . get (maxFrequency ).pop ();
19
- valueToCurrentFrequency . put (val , valueToCurrentFrequency . getOrDefault (val , 0 ) - 1 );
20
- if (frequencyToValues . get (maxFrequency ).isEmpty ()) {
21
- maxFrequency --;
21
+ int val = this . frequencyGroup . get (this . maxFrequency ).pop ();
22
+ this . frequencyMap . put (val , this . frequencyMap . get (val ) - 1 );
23
+ if (this . frequencyGroup . get (this . maxFrequency ).isEmpty ()) {
24
+ this . maxFrequency --;
22
25
}
23
26
return val ;
24
27
}
@@ -27,6 +30,6 @@ public int pop() {
27
30
/**
28
31
* Your FreqStack object will be instantiated and called as such:
29
32
* FreqStack obj = new FreqStack();
30
- * obj.push(x );
33
+ * obj.push(val );
31
34
* int param_2 = obj.pop();
32
35
*/
0 commit comments