题目名称
Min Stack—LeetCode链接
描述
Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.
· push(x) – Push element x onto stack.
· pop() – Removes the element on top of the stack.
· top() – Get the top element.
· getMin() – Retrieve the minimum element in the stack.
分析
题目中需要在constant time内取出栈中最小元素,所以可以考虑用两个stack,其中一个将最小元素存入,该栈栈顶元素一直是最小的,另一个栈存储正常元素。例如将4,6,7,3,2,5依次存入栈中,如下图所示:
C++代码
class MinStack {
private:
stack<int> st;
stack<int> stMin;
public:
void push(int x) {
st.push(x);
if(stMin.empty() || stMin.top()>=x)
stMin.push(x);
}
void pop() {
int top=st.top();
st.pop();
if(top<=stMin.top())
stMin.pop();
}
int top() {
return st.top();
}
int getMin() {
return stMin.top();
}
};
总结
对栈的操作,比较简单。