用两个栈实现队列

last modify

用两个栈实现队列_牛客题霸_牛客网

问题简述

用两个栈来实现一个队列,使用n个元素来完成 n 次在队列尾部插入整数(push)和n次在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。

思路

  • 详见代码

Python
# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.s1 = []
        self.s2 = []

    def push(self, node):
        self.s1.append(node)
        
    def pop(self):
        # if self.s2:
        #     return self.s2.pop()
        # else:
        #     while self.s1:
        #         self.s2.append(self.s1.pop())
        #     return self.s2.pop()

        # 更简洁的写法
        if not self.s2:
            while self.s1:
                self.s2.append(self.s1.pop())
        return self.s2.pop()
        

Last updated