Tap here to switch tabs
Problem
Ask
Submissions

Problem: Max Stack

hard
40 min
Explore how to implement a Max Stack data structure that supports standard stack operations along with efficient retrieval and removal of the maximum element. This lesson guides you through building methods like push, pop, top, peekMax, and popMax to manage elements and track maximums dynamically.

Statement

Design a custom stack class, Max Stack, that supports the basic stack operations and can find the maximum element present in the stack.

Implement the following methods for Max Stack:

  • Constructor: This initializes the Max Stack object.

  • Void Push(int x): This pushes the provided element, x, onto the stack.

  • Int Pop( ): This removes and returns the element on the top of the stack.

  • Int Top( ): This retrieves the most recently added element on the top of the stack without removing it.

  • Int peekMax( ): This retrieves the maximum element in the stack without removing it.

  • Int popMax( ): This retrieves the maximum element in the stack and removes it. If there is more than one maximum element, remove the most recently added one (the topmost).

Constraints:

  • 1000-1000 \leq x 1000\leq 1000

  • A maximum of 100100 calls can be made to Push( ), Pop( ), Top( ), peekMax( ) and popMax( ).

  • The Pop( ), Top( ), peekMax( ), and popMax( ) methods will always be called on a non-empty stack.

Tap here to switch tabs
Problem
Ask
Submissions

Problem: Max Stack

hard
40 min
Explore how to implement a Max Stack data structure that supports standard stack operations along with efficient retrieval and removal of the maximum element. This lesson guides you through building methods like push, pop, top, peekMax, and popMax to manage elements and track maximums dynamically.

Statement

Design a custom stack class, Max Stack, that supports the basic stack operations and can find the maximum element present in the stack.

Implement the following methods for Max Stack:

  • Constructor: This initializes the Max Stack object.

  • Void Push(int x): This pushes the provided element, x, onto the stack.

  • Int Pop( ): This removes and returns the element on the top of the stack.

  • Int Top( ): This retrieves the most recently added element on the top of the stack without removing it.

  • Int peekMax( ): This retrieves the maximum element in the stack without removing it.

  • Int popMax( ): This retrieves the maximum element in the stack and removes it. If there is more than one maximum element, remove the most recently added one (the topmost).

Constraints:

  • 1000-1000 \leq x 1000\leq 1000

  • A maximum of 100100 calls can be made to Push( ), Pop( ), Top( ), peekMax( ) and popMax( ).

  • The Pop( ), Top( ), peekMax( ), and popMax( ) methods will always be called on a non-empty stack.