包含min函数的栈
题目要求:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。
思路
该题需要用到两个栈,一个作为主栈,一个作为辅助栈,每次元素进主栈时先判断元素是否小于辅助栈栈顶元素或是辅助栈元素为空,判断为真的话元素一同进辅助栈。代码如下
class MinStack {
stack <int> S;
stack <int> Min;
public:
/** initialize your data structure here. */
MinStack() {
}
void push(int x) {
S.push(x);
if(Min.empty()||x<=Min.top())
Min.push(x);
}
void pop() {
if(S.top()==Min.top())
Min.pop();
S.pop();
}
int top() {
return S.top();
}
int min() {
return Min.top();
}
};