编写一个类,只能用两个栈结构实现队列,支持队列的基本操作(push,pop)。
给定一个操作序列ope及它的长度n,其中元素为正数代表push操作,为0代表pop操作,保证操作序列合法且一定含pop操作,请返回pop的结果序列。
测试样例:
输入:[1,2,3,0,4,0],6
返回:[1,2]
class TwoStack {
public:
stack<int> push_stack, pop_stack;
void pour_into(stack<int> &A, stack<int> &B)
{
while(!A.empty()){
B.push(A.top());
A.pop();
}
}
vector<int> twoStack(vector<int> ope, int n) {
vector<int> result;
for(int i=0; i<n; i++){
if(0 == ope[i]){
pour_into(push_stack, pop_stack);
result.push_back(pop_stack.top());
pop_stack.pop();
}else{
pour_into(pop_stack, push_stack);
push_stack.push(ope[i]);
}
}
return result;
}
};