419. Maximum Frequency Stack

0

Medium

Create a data structure that functions like a stack, allowing elements to be pushed onto the stack and the most frequently occurring element to be popped from the stack. Implement the FreqStack class:
  • FreqStack() initializes an empty frequency stack.
  • void push(int val) pushes an integer val onto the top of the stack.
  • int pop() removes and returns the most frequent element in the stack
      If there is a tie for the most frequent element, the element closest to the stack's top is removed and returned.
    .

Input Format

An integer n denoting the number of operations to be performed on the implemented stack.
The Nth line contains a string and an integer denoting the operation to be performed and the integer on which the operation is to be performed. The latter value is -1 for constructor call operation and pop operations.

Output Format

A list of the returned values for each operation

Example

Input

11 FreqStack -1 push 5 push 7 push 5 push 7 push 4 push 5 pop -1 pop -1 pop -1 pop -1

Output

null null null null null null null 5 7 5 4

Constraints

0 <= val <= 10^9
At most 2 * 10^4 calls will be made to push and pop.
It is guaranteed that there will be at least one element in the stack before calling pop.
Loading...

View Submissions

Console