定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
用两个栈,一个栈用来存数据,另一个栈用来存最小值,想一下,最小值栈中的栈顶元素代表当前的最小值,当又一个数据到来时,如果这个值小于最小值,当然要压入最小值栈,如果大于最小值,可以想到,这个值是不用用来压入最小值栈的,因为这个值肯定比最小值更早的弹出,所以这个值并不会影响最小值栈。
stack<int>s;
stack<int>mm;
void push(int value) {
s.push(value);
if(mm.empty())
mm.push(value);
else
{
if(value <= mm.top())
{
mm.push(value);
}
}
}
void pop() {
int t = s.top();
s.pop();
if(t == mm.top())
mm.pop();
}
int top() {
return s.top();
}
int min() {
return mm.top();
}