牛客-剑指offer系列题解:用两个栈实现队列(python语言)

记录刷题的过程。牛客和力扣中都有相关题目,这里以牛客的题目描述为主。该系列默认采用python语言。

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

2、所用数据结构:队列和栈

3、题解:
栈:先入后出
队列:先入先出
设计两个栈:删除acceptStack栈中的数据,在outputStack中添加这个数据,那么先在acceptStack中删除的数据,就会进入到outputStack的栈底,后在acceptStack中删除的数据,会后进入outputStack,那么它就会先出来。

class Solution:
    def init(self):
        #添加数据栈
        self.acceptStack=[]
        #删除数据栈
        self.outputStack = []
    def push(self, node):
        #向添加数据的栈中添加数据
        self.acceptStack.append(node)
    def pop(self):
        #判断删除数据的栈中是否有数据,没有的话,就添加数据,添加数据时,要添加栈1 中删除的数据
        if not self.outputStack:
            while self.acceptStack:
            self.outputStack.append(self.acceptStack.pop())
        #如果有数据的话,就返回
        if self.outputStack:
            return self.outputStack.pop()
        #如果没有数据,说明没有数据添加进去,也就不需要删除数据,所以返回none
        else:
            return None
发布了61 篇原创文章 · 获赞 10 · 访问量 2915

猜你喜欢

转载自blog.csdn.net/weixin_42042056/article/details/105509334
今日推荐