2020-8-11
这道题的解题思路就是存数的同时存最小值。有两种数据结构的构建思路,一种是建立一个pair<int,int>类型的栈,直接将数值和最小值存入一个栈;另一种是使用双栈,一个数值栈一个最小值栈,在存数值的同时将最小值压栈,出栈时一起出栈,就可以保证辅助栈的栈顶元素始终是栈中所有元素的最小值。
https://leetcode-cn.com/problems/min-stack-lcci/
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
}
void push(int x) {
stk.push(x);
if(stmin.empty() || x < stmin.top())
stmin.push(x);
else
stmin.push(stmin.top());
}
void pop() {
stk.pop();
stmin.pop();
}
int top() {
return stk.top();
}
int getMin() {
return stmin.top();
}
stack<int>stk;
stack<int>stmin;
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(x);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/