[jobdu]包含min函数的栈

时间:2022-11-28 22:25:23

老题,两个stack。其中一个维护min值就行了。

#include <iostream>
#include <stack>
using namespace std; int main()
{
int n;
while (cin >> n)
{
stack<int> st;
stack<int> min;
while (n--)
{
char ch;
cin >> ch;
if (ch == 's')
{
int k;
cin >> k;
st.push(k);
if (min.empty() || k < min.top())
min.push(k);
cout << min.top() << endl;
}
else // assume ch == 'o'
{
int k = st.top();
st.pop();
if (min.top() == k)
min.pop();
if (min.empty()) cout << "NULL" << endl;
else cout << min.top() << endl;
}
}
} return 0;
}