题目链接:https://www.acwing.com/problem/content/90/
思路很简单,就是两个栈,然后一个读取数,然后另一个存最小值。
这道题非常的简单,有一点我给疏忽了,就是最后一个数压入的时候,这时候这个数可以等于上一个最小值,然后也会弹出。
代码:
class MinStack {
public:
/** initialize your data structure here. */
stack<int> stackValue;
stack<int> stackMin;
MinStack() {
}
void push(int x) {
stackValue.push(x);
if (stackMin.empty() || stackMin.top() >= x)
stackMin.push(x);
}
void pop() {
if (stackMin.top() == stackValue.top()) stackMin.pop();
stackValue.pop();
}
int top() {
return stackValue.top();
}
int getMin() {
return stackMin.top();
}
};