4_4雙棧佇列

weixin_33693070發表於2017-09-11

編寫一個類,只能用兩個棧結構實現佇列,支援佇列的基本操作(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;
    }
};

相關文章