1,题目:
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
2.问题分析:
要你定义一个类,这个类里边实现了栈的基本操作外,还实现了一个求栈最小元素的min函数。
3,牛客网上编码为:
class Solution {
public:
stack<int> data;
stack<int> fuzhu;
void push(int value) {
data.push(value);
if (fuzhu.empty() || fuzhu.top() > value)
{
fuzhu.push(value);
}
else
fuzhu.push(fuzhu.top());
}
void pop() {
if (data.empty() || fuzhu.empty())//这里可用assert(fuzhu.size()>0 && data.size()>0)代替
{
exit(0);
}
data.pop();
fuzhu.pop();
}
int top() {
if (data.empty() || fuzhu.empty())
{
exit(0);
}
return data.top();
}
int min() {
if (data.empty() || fuzhu.empty())
{
exit(0);
}
return fuzhu.top();
}
};
这个类里边实现了栈的基本函数,比如top()就是返回数据栈中的栈顶元素,而min()就是要求当前栈中的最小元素,我们通过一个辅助栈来求出。
额外知识点:
容器栈的基本操作,自然想到容器队列的基本操作等;
另外asser()的用法。