题目描述:
定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。
题解;
class Solution {
public:
stack<int> st;
stack<int> minst;
void push(int value)
{
st.push(value);
if(minst.empty())
minst.push(value);
else
{
if(value > minst.top())
minst.push(minst.top());
else
minst.push(value);
}
}
void pop()
{
st.pop();
minst.pop();
}
int top()
{
return st.top();
}
int min()
{
return minst.top();
}
};
题目描述:
两个栈,一个保存正常的数据流,一个保存当前的最小值;
保存最小值的栈,每次进栈都和栈顶比较,如果没有栈顶小就再把栈顶入栈,如果比栈顶小,就将这个数入栈。