数据结构与算法面试题包含min函数的栈
Posted zhiyong_will
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构与算法面试题包含min函数的栈相关的知识,希望对你有一定的参考价值。
题目来源“数据结构与算法面试题80道”。
问题分析:栈的特点是先进后出。要能够取出当前的最小值,需要用另一个栈保存当前的最小值,所以可采用“双栈”的结构,一个栈保存所有的值,另一个栈保存当前的最小值。
方法:
template <class Type> class min_stack{
private:
stack<Type> s1;
stack<Type> s2;
public:
min_stack(){}
~min_stack(){}
Type min(){
if (!s2.empty()){
return s2.top();
}
}
void push(Type a){
s1.push(a);
if (s2.empty() || a <= s2.top()){
s2.push(a);
}
}
Type pop(){
if (!s1.empty() && !s2.empty()){// 非空
if (s1.top() == s2.top()){
s2.pop();
}
return s1.pop();
}
}
};
以上是关于数据结构与算法面试题包含min函数的栈的主要内容,如果未能解决你的问题,请参考以下文章