题解 | #用两个栈实现队列#

用两个栈实现队列

http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6

搬运题解区牛客500979850号的动图。 alt

在实现pop操作时,需要讨论pop时stack2的状态:如果stack2不为空,直接在stack2里面pop即可;如果stack2为空,则要先用stack2装完stack1的内容,再在stack2里面pop。

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []
    def push(self, node):
        self.stack1.append(node)
        
    def pop(self):
        if self.stack2==[]:#stack2为空时,如果此时要执行pop操作:则要先用stack2装完stack1的内容,再在stack2里面pop。
        #具体做法为,将stack1的所有内容依次出栈然后入栈到stack2中,再在stack2里面pop。
            while  self.stack1!=[]:                           
                self.stack2.append(self.stack1.pop())
            return self.stack2.pop()         
        else:#stack2不为空时,如果此时要执行pop操作:直接在stack2里面pop即可。
            return self.stack2.pop()  
            
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务