155. 最小栈
#
题目设计一个支持 push
,pop
,top
操作,并能在常数时间内检索到最小元素的栈。
push(x)
—— 将元素 x 推入栈中。pop()
—— 删除栈顶的元素。top()
—— 获取栈顶元素。getMin()
—— 检索栈中的最小元素。
示例:
提示:
pop
、top
和getMin
操作总是在 非空栈 上调用。
#
思路多了个 Min
属性的栈,核心难点在于 在常数时间内 检索到最小元素。如果扫描一下的话会是 O(n)。
由于栈是一个受限的线性表,因此我们可以用链表来实现该栈,并在每一节点上记录当前的最小值。由于栈是后进先出,因此我们只需要比较 top
处的节点就能更新 Min
了。