创建2个栈,push到栈1,pop栈2,如果栈2为空,就把栈1的数据全部转到栈2,
这样的复杂度比直接暴力要小一些,但感觉直接暴力也能过吧,就不试了。
而如果要用2个队列模拟一个栈的话,先压入队列1,如果有pop,就把队列1转移到队列2,pop最上面的,
然后如果有压入,就压入队列2,有pop就转移队列1,如此循环。。。。无代码,很简单
#include<cstdio>
#include<cstring>
#include<stack>
#include<algorithm>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
stack<int>st1,st2;
while(n--)
{
char str[11];
scanf("%s",str);
if(strcmp(str,"POP") == 0)
{
if(st2.empty())
{
while(!st1.empty())
{
int t=st1.top();
st1.pop();
st2.push(t);
}
}
if(st2.empty())
{
printf("-1\n");
}
else
{
int t=st2.top();
st2.pop();
printf("%d\n",t);
}
}
else
{
int t;
scanf("%d",&t);
st1.push(t);
}
}
return 0;
}