Lintcode 用栈实现队列

来源:互联网 发布:手机桌面控制软件 编辑:程序博客网 时间:2024/06/05 22:29

正如标题所述,你需要使用两个栈来实现队列的一些操作。

队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。

pop和top方法都应该返回第一个元素的值。

您在真实的面试中是否遇到过这个题? Yes
样例
比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2
巨水题,思路:一个栈缓存,一个栈当队列

class MyQueue {public:    stack<int> stack1;    stack<int> stack2;    MyQueue() {        // do intialization if necessary    }    void push(int element) {        // write your code here        while(!stack1.empty())        {            stack2.push(stack1.top());            stack1.pop();        }        stack1.push(element);        while(!stack2.empty())        {            stack1.push(stack2.top());            stack2.pop();        }    }    int pop() {        // write your code here        int res = stack1.top();        stack1.pop();        return res;    }    int top() {        // write your code here        return stack1.top();    }   };