剑指Offer之 - 包含min函数的栈
2015-05-07 14:14
260 查看
题目:
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min,push,pop函数的世界复杂度都是O(1)。
思路:
维护一个辅助栈s2,用来存储当前栈中的最小元素比如栈s1 :<2,4,3,1,5> ,辅助栈s2就是: <2,2,2,1,1>
代码:
#include<iostream>#include <stack>
using namespace std;
//功能:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。
//在该栈中,调用min,push,pop函数的世界复杂度都是O(1)。
//思路:维护一个辅助栈s2,用来存储当前栈中的最小元素
//比如栈s1 :<2,4,3,1,5> ,辅助栈s2就是: <2,2,2,1,1>
struct StackWithMin
{
stack<int> s1;
stack<int> s2;
void push1(int val)
{
s1.push(val);
if(s2.empty() || val <= s2.top())
s2.push(val);
else
{
s2.push(s2.top());
}
}
int min()
{
if(!s2.empty())
return s2.top();
else
return -1;
}
void pop1()
{
if(!s1.empty() && !s2.empty())
{
s1.pop();
s2.pop();
}
}
};
int main()
{
StackWithMin obj;
obj.push1(4);
obj.push1(2);
obj.push1(3);
obj.push1(1);
cout<<obj.min()<<endl;
obj.pop1();
cout<<obj.min()<<endl;
}
相关文章推荐
- 剑指offer——包含min函数的栈
- 剑指offer--包含min函数的栈
- 剑指offer-面试题21.包含min函数的栈
- (C++)剑指offer-20:包含min函数的栈(举例让抽象具体化)
- 剑指Offer_面试题21_包含min函数的栈
- 剑指offer_20_包含min函数的栈
- 剑指offer-包含min函数的栈
- 剑指offer 二叉树的深度 顺时针打印矩阵 包含min函数的栈 栈的压入、弹出序列
- 剑指offer——面试题21:包含min函数的栈(泛型编程,一个巧妙的思维)
- 剑指Offer 21 包含min函数的栈
- 剑指offer - 包含min函数的栈
- 剑指offer 包含min函数的栈
- 剑指offer面试题[21]包含min函数的栈
- [剑指offer][面试题21]包含min函数的栈
- 剑指offer 20 包含min函数的栈
- 剑指offer--面试题21:包含min函数的栈--Java实现
- 剑指offer 包含min函数的栈
- 剑指offer:包含min函数的栈
- 【剑指offer——JAVA实现】包含min函数的栈(含思路解答示意图)
- 剑指Offer 21:包含min函数的栈