Mark As Completed Discussion

Good afternoon! 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).

1const stack = [];
2
3stack.push(5);
4stack.push(6);
5stack.push(7);
6stack.pop();
7// 7
8stack.pop();
9// 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?

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

Here's our guided, illustrated walk-through.

How do I use this guide?