剑指offer之面试题21——包含min函数的栈

题目:

定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push及pop的时间复杂度都是O(1)。

代码:

剑指offer之面试题21——包含min函数的栈

思路:

首先往空的数据栈里压入数字3,显然现在3是最小值,我们也把这个最小值压入辅助栈。接下来往数据栈里压入数字4。由于4大于之前的最小值,因此我们仍然往辅助栈里压入数字3。第三步继续往数据栈里压入数字2。由于2小于之前的最小值3,因此我们把最小值更新为2,并把2压入辅助栈。同样当压入数字1时,也要更新最小值,并把新的最小值1压入辅助栈。

剑指offer之面试题21——包含min函数的栈