最小栈简介:
最小栈是一种算法思路,可以在O(1)的时间复杂度中获取整个栈的最小值
最小栈思路:
我们需要两个栈,一个是主栈,一个是最小栈,如果一个数进主栈了,那么我们把这个数和最小栈的栈顶元素比较,如果比最小栈的栈顶元素小,那么这个数就入最小栈,否则就把最小栈的栈顶元素重新入最小栈
题目:最小栈
题目描述:
输入:
输出:
解释:
代码:
class MinStack {
public:
stack<int> st, stt;
MinStack() {
}
void push(int val) {
st.push(val);
if(stt.empty()){
stt.push(val);
}else{
if(stt.top() > val){
stt.push(val);
}else{
stt.push(stt.top());
}
}
}
void pop() {
st.pop();
stt.pop();
}
int top() {
return st.top();
}
int getMin() {
return stt.top();
}
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/