2020-05-10
1.题目描述
栈的最小值
2.题解
需要牺牲空间换时间,可以用vector来存储至当前元素的最小值,在push或者pop元素的时候需要更新。
3.代码
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
minnow=0x7fffffff;
}
void push(int x) {
mystack.push(x);
if (x<minnow) minnow=x;
myvector.push_back(minnow);
}
void pop() {
mystack.pop();
myvector.pop_back();
if (!myvector.empty()) minnow=myvector[myvector.size()-1]; // 更新最小值
else{
minnow=0x7fffffff;
}
}
int top() {
return mystack.top();
}
int getMin() {
return minnow;
}
stack<int> mystack;
vector<int> myvector;
int minnow;
};
/**
* Your MinStack object will be instantiated and called as such:
* MinStack* obj = new MinStack();
* obj->push(x);
* obj->pop();
* int param_3 = obj->top();
* int param_4 = obj->getMin();
*/