
这个题看着第一个想法是栈加优先队列,存两个数据结构(是不是没救了)
其实此题非常简单,咱们只要让在栈中存一个pair,让栈中的每个元素维护最小值即可。
class MinStack {
typedef pair<int, int> P;
public:
stack<P> s;
/** initialize your data structure here. */
MinStack() {
}
void push(int val) {
if(s.empty())s.push(P(val, val));
else
{
int last_min = s.top().second;
s.push(P(val, min(last_min, val)));
}
}
void pop() {
s.pop();
}
int top() {
return s.top().first;
}
int getMin() {
return s.top().second;
}
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(val);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/
版权声明:本文为qq_39678022原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。