You need to modify the design of the stack data structure such that it supports
push()
,
pop()
,
top()
and
getMin()
operations in constant time(
O(1)
).
Problem Note:
-
top()
gets the top element -
getMin()
returns the minimum element in the stack -
push(elem)
pushes an elementelem
in the stack -
pop()
removes the top element -
It is guaranteed that input is consistent, i.e., only
push()
will be called if the stack is supposed to be empty - Kudos if you solve it using constant space!
-
The input provided in this case would be a series of function calls to
push()
,pop()
,top()
andgetMin()
Example 1
Input:
st = minStack()
st.push(4)
st.push(2)
st.top() ---> returns 2
st.getMin() ---> returns 2
st.pop()
st.push(6)
st.getMin() ---> returns 4
Example 2
Input:
st = minStack()
st.push(-1)
st.push(5)
st.top() ---> returns 5
st.push(-4)
st.getMin() ---> returns -4
st.pop()
st.pop()
st.getMin() ---> returns -1