两个栈实现队列

用两个栈实现队列

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()

全部评论

相关推荐

大佬们考的怎么样?看样子不能只刷acm编程题了,机器学习题也要刷下。😭
牛客561236133号:绷不住了,皮什么玩意来着
投递美团等公司10个岗位 >
点赞 评论 收藏
分享
02-22 20:28
重庆大学 Java
程序员牛肉:首先不要焦虑,你肯定是有希望的。 首先我觉得你得好好想一想自己想要什么。找不到开发岗就一定是失败的吗?那开发岗的35岁危机怎么说?因此无论是找工作还是考公我觉得你都需要慎重的想一想。但你一定要避开这样一个误区:“我是因为找不到工作所以不得不选择考公”。 千万不要这么想。你这个学历挺好的了,因此你投后端岗肯定是有面试机会的。有多少人简历写的再牛逼,直接连机筛简历都过不去有啥用?因此你先保持自信一点。 以你现在的水平的话,其实如果想要找到暑期实习就两个月:一个月做项目+深挖,并且不断的背八股。只要自己辛苦一点,五月份之前肯定是可以找到暑期实习的,你有点太过于高看大家之间的技术差距了。不要焦虑不要焦虑。 除此之外说回你这个简历内容的话,基本可以全丢了。如果想做后端,先踏踏实实做两个项目再说+背八股再说。如果想考公,那就直接备战考公。 但是但是就像我前面说的:你考公的理由可以是因为想追求稳定,想追求轻松。但唯独不能是因为觉得自己找不到工作。不能这么小瞧自己和自己的学历。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务