两个栈实现队列

用两个栈实现队列

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

'''
在Python环境下,原生的list即为一个栈实现,我们直接通过定义两个list即可定义出两个栈:
1、首先要明确队列的特性是先进先出,栈的特性是先进后出;
2、进队列的方法里我们只要有容器能装元素就行了,所以直接往栈1里压;
3、在出队列方法里,要保证出队列的是最先进入的元素:
4、在往栈2压完一批元素后,栈1进了新的元素想往栈2压的时候,栈2必须把上一批的元素清空了才行(也就是栈2必须是空的)。
'''
class Solution:
    def __init__(self):
        self.stack1=[] # 新建空列表
        self.stack2=[] # 新建空列表
    def push(self, node):
        # write code here
        self.stack1.append(node) # 所有push弹入的元素都加入stack1列表
    def pop(self):
        # return xx
        if self.stack2==[]: # 如果此时栈stack2为空,则需要将栈stack1中的所有元素依次出栈并入栈到stack2
            while self.stack1:
                self.stack2.append(self.stack1.pop())
        # 如果栈stack2不为空,直接弹出栈stack2元素
        return self.stack2.pop()

全部评论

相关推荐

好在哪里了?我请问了?
_hengheng:很好啊,我看旁边同事都入职了都有工作
点赞 评论 收藏
分享
野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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