题目:
最近琐事加身,加上自控力出现了一次崩盘,已经有一段时间没有更新了,实在惭愧.
现在回归状态,去做自己所不敢面对的事情,这才是迎接困难应该有的态度!
思路:
再写一个最小值利栈就可以搞定:
如此一来,最上面的都是最小的,每次push和pop操作对两个同时进行即可
代码:
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
}
void push(int x) {
_data.push(x);
//在压栈的时候,将其数据存入一个新的栈中
if(min_data.empty()){
//如果为空,直接压入
min_data.push(x);
return;
}
if(x<min_data.top()){
min_data.push(x);
}else{
min_data.push(min_data.top());
}
}
void pop() {
_data.pop();
min_data.pop();
}
int top() {
return _data.top();
}
int getMin() {
return min_data.top();
}
//可以写个链栈
private:
std::stack<int> _data;
std::stack<int> min_data;
};
/**
* 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();
*/
总结:
上次写的,忘了补笔记,这次补上.