LeetCode_225-Implement Stack using Queues
使用队列实现栈的操作
class MyStack { public: /** Initialize your data structure here. */ MyStack() { } /** Push element x onto stack. */ void push(int x) { if(!queueA.empty()) { queueA.push(x); } else { queueB.push(x); } } /** Removes the element on top of the stack and returns that element. */ int pop() { int nTmp = 0; if(queueA.empty()) { while(queueB.size() > 1) { queueA.push(queueB.front()); queueB.pop(); } nTmp = queueB.front(); queueB.pop(); } else { while(queueA.size() > 1) { queueB.push(queueA.front()); queueA.pop(); } nTmp = queueA.front(); queueA.pop(); } return nTmp; } /** Get the top element. */ int top() { int nTmp = 0; if(queueA.empty()) { while(!queueB.empty()) { nTmp = queueB.front(); queueA.push(queueB.front()); queueB.pop(); } } else { while(!queueA.empty()) { nTmp = queueA.front(); queueB.push(queueA.front()); queueA.pop(); } } return nTmp; } /** Returns whether the stack is empty. */ bool empty() { if(queueA.empty() && queueB.empty()) { return true; } return false; } protected: queue<int> queueA; queue<int> queueB; };
可关注公众号了解更多的面试技巧