包含min函数的栈
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
听了左神的讲解,才知道这题不是考察链表,考察设计。此题可以使用stl中的栈。
解法是 一个数据站 一个辅助栈
比如进栈顺序是
4 5 3 5 2 2 6 5
辅助栈
4 x 3 x 2 2 x x
x代表不进栈
也比较好看出 辅助栈 的栈顶就是用来保存 数据站中的最小值的。
所以辅助栈只压入 小于等于当前最小值的数
出栈时,如果数据栈顶和辅助栈顶相同时,辅助栈才出栈。
<pre name="code" class="cpp">class Solution {
public:
void push(int value) {
if(sta.empty()){
sta.push(value);
help.push(value);
}else{
sta.push(value);
if(value<=help.top()){
help.push(value);
}
}
}
void pop() {
if(sta.top()==help.top()){
help.pop();
}
sta.pop();
}
int top() {
return sta.top();
}
int min() {
return help.top();
}
stack<int> sta;
stack<int> help;
};