两个栈实现队列 牛客网 程序员面试金典 C++ Python

两个栈实现队列 牛客网 程序员面试金典 C++ Python

  • 题目描述
  • 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

C++

//run:5ms memeory:612k
class Solution
{
public:
    void push(int node) {
        stack1.push(node);
    }
    
    int pop() {
        if (stack2.empty())
            while(!stack1.empty()){
                stack2.push(stack1.top());
                stack1.pop();
            }

        int ret = stack2.top();
        stack2.pop();
        return ret;
    }

private:
    stack<int> stack1;
    stack<int> stack2;
};

Python

class Solution:
#run:28ms memory:5624k
    def __init__(self):
        self.stk1 = []
        self.stk2 = []
        
    def push(self, node):
        self.stk1.append(node)
        
    def pop(self):
        if self.stk2 == []:
            while self.stk1:
                n = self.stk1.pop()
                self.stk2.append(n)
        n = self.stk2.pop()
        return n

 

点赞