刚回到家,玩了很长时间,看完了比赛,敲点代码。
这个题用两个栈实现,一个为正常的栈,一个为存当前最小值的栈,很容易维护。
<pre name="code" class="cpp">class Solution {
private:
stack<int> data, mindata;
public:
void push(int value) {
data.push(value);
if(mindata.empty())
mindata.push(value);
else if(value < mindata.top())
{
mindata.push(value);
}
}
void pop() {
int temp = data.top();
data.pop();
if(temp == mindata.top())
mindata.pop();
}
int top() {
return data.top();
}
int min() {
return mindata.top();
}
};