思路:构建一个数据栈st,和一个最小数字栈 smin
st 的所有操作的都是正常的,正常的push(),top(),pop()
题目的关键是在st进行push(),top(),pop() 操作的时候,smin需要执行怎样的操作才能保证min()函数能够实现输出st中最小的数值的功能。
注意:这里pop()函数的意义是,当数据栈st进行pop()的时候,相当于需要被st数据栈pop()掉的数字不参与最小数字比较了,这时候要是恰好st数据栈pop()掉的数字就是smin最小数据栈的栈顶元素(也就是最小的元素)的话,那么smin栈也不得不把栈顶元素pop()掉,因为这个数都不参与比较了。