Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 9ac0691

Browse files
authored
Update Maximum Frequency Stack.java
1 parent 57ba3d5 commit 9ac0691

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

Hard/Maximum Frequency Stack.java

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,27 @@
11
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+
57
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;
911
}
1012

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);
1518
}
1619

1720
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--;
2225
}
2326
return val;
2427
}
@@ -27,6 +30,6 @@ public int pop() {
2730
/**
2831
* Your FreqStack object will be instantiated and called as such:
2932
* FreqStack obj = new FreqStack();
30-
* obj.push(x);
33+
* obj.push(val);
3134
* int param_2 = obj.pop();
3235
*/

0 commit comments

Comments
 (0)