#include<iostream.h>
#include<stack>
using namespace std;
class Solution
{
public:
stack<int> st, minSt;//st表示存储元素的栈,minSt保存每次栈操作时,保存栈中最小元素
void push(int value) ;
void pop() ;
int min() ;
};
void Solution::push(int value)
{
st.push(value);
if (minSt.empty()||value < minSt.top())
minSt.push(value);
else
minSt.push(minSt.top());
return;
}
void Solution::pop()
{//出栈时,需要对两个栈st和minSt同时操作
if (!st.empty())
{
st.pop();
minSt.pop();
}
return;
}
int Solution::min()
{
if (!minSt.empty())
{
return minSt.top();
}
return 0;
}
void main()
{
Solution s;
s.push (2);
s.push (3);
s.push (1);
s.push (7);
s.push (0);
s.push (13);
s.pop();
s.pop();
s.pop();
printf("当前最小栈内元素为:%d\n",s.min());
}
剑指offer--面试题30:包含min函数的栈
最新推荐文章于 2021-05-08 23:34:36 发布