题目如下
思路与代码
我们会用到两个栈
一个放元素。另一个放最小元素。
- 那么出栈的时候两个值相同就一起出栈,否则只有第一个放元素的栈出栈
- 返回top的时候直接范围放元素的栈的top即可
- 最小值当然就是第二个放最小元素的栈的top了
class Solution {
public:
stack<int> s1;
stack<int> s2;
void push(int value) {
s1.push(value);
if(s2.empty()||s2.top()>value) s2.push(value);
}
void pop() {
if(s1.top()==s2.top()) s2.pop();
s1.pop();
}
int top() {
return s1.top();
}
int min() {
return s2.top();
}
};