# Problem Definition

## Description

Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

```plaintext
push(x) – Push element x onto stack.
pop() – Removes the element on top of the stack.
top() – Get the top element.
getMin() – Retrieve the minimum element in the stack.
Note that all the operations have to be constant time operations.
```

### Questions to ask the interviewer

```plaintext
Q: What should getMin() do on empty stack?
A: In this case, return -1.

Q: What should pop do on empty stack?
A: In this case, nothing.

Q: What should top() do on empty stack?
A: In this case, return -1
```

**NOTE:** If you are using your own declared global variables, make sure to clear

## Notes