题目描述
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
定义两个栈,v1,minv;分别表示压入原始数据的栈和压入当前最小数据的栈。
(1)minv为空,直接把原始数据value入栈
(2)minv非空,若压入数据value比minv栈顶还要小,value入栈minv;否则minv继续栈顶元素。
这样就保证minv是原始数据的最小元素,并且两个栈的元素个数保持一致,其中,最小元素就是minv的栈顶元素。
class Solution {
public:
stack<int> v1,minv;
void push(int value) {
v1.push(value);
if(minv.empty())
{
minv.push(value);
}
else
{
if(minv.top()>value)
minv.push(value);
else
minv.push(minv.top());
}
}
void pop() {
if(!v1.empty())
{
v1.pop();
minv.pop();
}
}
int min() {
if(!minv.empty())
return minv.top();
return 0;
}
};
5988

被折叠的 条评论
为什么被折叠?



