#40 Implement Queue by Two Stacks

来源:互联网 发布:可以拼长图的软件 编辑:程序博客网 时间:2024/05/16 00:44

题目描述:

As the title described, you should only use two stacks to implement a queue's actions.

The queue should support push(element)pop() and top()where pop is pop the first(a.k.a front) element in the queue.

Both pop and top methods should return the value of first element.

Example
push(1)pop()     // return 1push(2)push(3)top()     // return 2pop()     // return 2
Challenge 

implement it by two stacks, do not use any other data structure and push, pop and top should be O(1) by AVERAGE.

Mycode(AC = 37ms):

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


0 0