最大频率栈 Maximum Frequency Stack

时间:2023-03-08 22:32:51

2018-10-06 22:01:11

问题描述:

最大频率栈 Maximum Frequency Stack

最大频率栈 Maximum Frequency Stack

问题求解:

为每个频率创建一个栈即可。

class FreqStack {
Map<Integer, Integer> map;
List<Stack<Integer>> stacks; public FreqStack() {
map = new HashMap<>();
stacks = new ArrayList<>();
} public void push(int x) {
int freq = map.getOrDefault(x, 0);
freq++;
map.put(x, freq);
if (freq > stacks.size()) {
Stack<Integer> stack = new Stack<>();
stack.push(x);
stacks.add(stack);
}
else {
Stack<Integer> stack = stacks.get(freq - 1);
stack.push(x);
}
} public int pop() {
Stack<Integer> stack = stacks.get(stacks.size() - 1);
int res = stack.pop();
if (stack.isEmpty()) stacks.remove(stacks.size() - 1);
int freq = map.get(res);
map.put(res, --freq);
if (freq == 0) map.remove(res);
return res;
}
} /**
* Your FreqStack object will be instantiated and called as such:
* FreqStack obj = new FreqStack();
* obj.push(x);
* int param_2 = obj.pop();
*/