Mark As Completed Discussion

Good evening! Here's our prompt for today.

Recall that a stack is an abstract data type modeling a collection of elements. Its primary operations are push (which adds an element to the top of the stack) and pop (which removes the most newest element).

Traditionally, a stack can easily be implemented in many dynamic languages using an array (and its built-in methods).

1Stack<int> stack = new Stack<int>();
2
3stack.Push(5);
4stack.Push(6);
5stack.Push(7);
6Console.WriteLine(stack.Pop());
7// Output: 7
8Console.WriteLine(stack.Pop());
9// Output: 6

However, let's say we wanted to implement a stack with the following interface, requiring the following methods to be defined. The most important being the last one, min() - a method that lets us obtain the minimum element at any given time.

push(val) - add an element on to the top of the stack.

pop(val) - remove the element at the top of the stack and return it.

peek(val) - see the element at the top of the stack without removing it.

min() - get minimum element in stack.

Description

How would you do it, and can you implement it via a MinStack class? The class should have the following methods. Work off this skeleton:

SNIPPET
1class MinStack {
2  constructor() {
3  }
4
5  push(val) {
6  }
7  
8  pop() {
9  }
10
11  peek() {
12  }
13
14  min() {
15  }
16}

Can you do call min() and retrieve it in O(1) time?

Constraints

  • Total number of operations in the stack <= 100000
  • The values will be in the range -1000000000 and 1000000000
  • Expected time complexity : O(1)
  • Expected space complexity : O(n)

Try to solve this here or in Interactive Mode.

How do I practice this challenge?

CSHARP
OUTPUT
:001 > Cmd/Ctrl-Enter to run, Cmd/Ctrl-/ to comment

Here's our guided, illustrated walk-through.

How do I use this guide?

Access all course materials today

The rest of this tutorial's contents are only available for premium members. Please explore your options at the link below.

Returning members can login to stop seeing this.