双栈队列练习题

来源:互联网 发布:淘宝店铺宝贝被删除 编辑:程序博客网 时间:2024/04/26 11:02

链接:https://www.nowcoder.com/courses/1/4/4
来源:牛客网

编写一个类,只能用两个栈结构实现队列,支持队列的基本操作(push,pop)。
给定一个操作序列ope及它的长度n,其中元素为正数代表push操作,为0代表pop操作,保证操作序列合法且一定含pop操作,请返回pop的结果序列。
测试样例:
[1,2,3,0,4,0],6
返回:[1,2]`

class TwoStack {public:    vector<int> twoStack(vector<int> ope, int n) {        // write code here        stack<int> stackpush;        stack<int> stackpop;        vector<int> ivec;        int m=0;        for(int i=0;i<n;i++)            {            if(ope[i]>0)                {                stackpush.push(ope[i]);                m++;            }        }        for(int i=0;i<m;i++)            {            int l=stackpush.top();            stackpush.pop();            stackpop.push(l);        }        for(int i=0;i<n;i++)            {            if(ope[i]==0)                {                int m=stackpop.top();            stackpop.pop();            ivec.push_back(m);            }        }        return ivec;    }};
0 0