Search⌘ K
AI Features

Maximum Frequency Stack

Explore how to design and implement a frequency stack where elements are pushed and the most frequent are popped first. Learn to handle ties by removing the most recently added item among those with the highest frequency, preparing you to solve similar coding interview challenges efficiently.

Statement

Design a stack-like data structure. You should be able to push elements to this data structure and pop elements with maximum frequency.

You’ll need to implement the FreqStack struct that should consist of the following:

  • FreqStack: This is a struct used to declare a frequency stack.

  • Push(value): This is used to push an integer data onto the top of the stack.

  • Pop(): This is used to remove and return the most frequent element in the stack.

Note: If there is a tie for the most frequent element, then the most recently pushed element is removed and returned.

Constraints:

  • 00 \leq value 104\leq 10^4

  • At most, 2×1032 \times 10^3 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().

Examples

canvasAnimation-image
1 / 2

Understand the problem

Let’s take a moment to make sure we have correctly understood the problem. The quiz below helps us to check that we are solving precisely the right problem:

Maximum Frequency Stack

1.

What is the output if four Pop() calls are made onto this stack?

A.

[5, 4, 7, 5]

B.

[5, 7, 4, 5]

C.

[7, 5, 4, 7]


1 / 3

Figure it out!

We have a game for you to play. Rearrange the logical building blocks to develop a clearer understanding of how to solve this problem.

Sequence - Vertical
Drag and drop the cards to rearrange them in the correct sequence.

1
2
3
4
5

Try it yourself

Implement your solution in the following coding playground.

Go
usercode > main.go
package main
type FreqStack struct {
// Write your code here
}
func Constructor() *FreqStack {
// Replace this placeholder return statement with your code
return nil
}
func (this *FreqStack) Push(value int) {
// Write your code here
}
func (this *FreqStack) Pop() int {
// Replace this placeholder return statement with your code
return -1
}
Maximum Frequency Stack