具体做法:
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(); } };