设计一个有getMin功能的栈

Problem

实现一个特殊的栈,在实现栈基本功能的前提下,再返回栈中最小值的操作。

提示:

设计栈可以使用现成的栈结构

解题思路

两个栈,栈stackData用于实现栈的基本功能,栈stackMin用于返回栈中最小值。

1.压入规则

if stackData为空,
stackData stackMin都入栈。
else if stackData.top() >= stackMin.top(),
stackData stackMin都入栈
else
仅仅stackData入栈

2.弹出规则

if stackData不为空时,
if stackData.top()==stackMin.top(),
stackData stackMin都出栈
else
仅仅stackData出栈

3.最小值

返回stackMin的栈顶元素

时空分析

所有操作的时间复杂度都是o(1),空间复杂度为o(n).