具体做法:
1、构建两个栈,用于实现查找栈的最小值;
2、栈stack1按正常压入元素;栈stack2用来实现获取栈的最小值:当stack2为空时,将元素压入栈;如果输入的元素大于stack2栈顶的元素,那么stack2就压入与栈顶相同的元素(因为此时栈中的最小元素依然是栈顶元素);当输入元素不大于栈顶元素时,将输入元素压入栈stack2,因为此时栈的最小元素发生了变化。
class Solution {
private:
stack<int> stack1;
stack<int> stack2;
public:
void push(int value) {
stack1.push(value);
if (stack2.empty() || value <= stack2.top()) {
stack2.push(value);
} else {
stack2.push(stack2.top());
}
}
void pop() {
stack1.pop();
stack2.pop();
}
int top() {
return stack1.top();
}
int min() {
return stack2.top();
}
};

京公网安备 11010502036488号