设计一个有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).