数据结构与算法面试题包含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函数的栈的主要内容,如果未能解决你的问题,请参考以下文章

[剑指offer]面试题21:包含min函数的栈

剑指offer:面试题21包含min函数的栈

《剑指Offer——面试题30. 包含min函数的栈》代码

剑指Offer - 面试题30:包含min函数的栈

(程序员面试题精选(02))-设计包含min函数的栈

面试题30:包含 min 函数的栈