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

用两个栈实现队列

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

注意相应的数据结构的想法和思路

栈和队列自带push()和pop操作

核心思想为:将另一个栈中的出栈元素,按照先后循序压入其中的一个栈中,然后这个栈pop出,送入另一个栈中,这样就实现了先后出栈顺序的颠倒,最后第二个栈压出元素即可实现队列的先进先出操作

# -*- coding:utf-8 -*-
class Solution:
    def __init__(self):
        self.stack1 = []
        self.stack2 = []
        
        
    # 需要掌握的方法为,直接将相关的队列1中的node节点,先把所有的节点放入stack1中,然后pop出来,放到stack2中,然后stack2直接pop
    def push(self, node):
        # write code here
        self.stack1.append(node)
        # 所有的node都放进去了
    
    
    def pop(self):
        # return xx
        # 如果stack2不为空,可执行出栈操作
        if self.stack2!=[]:
            
            return self.stack2.pop()  # 且还要输出到控制台
            
        
        # 为空,进一个出一个
        elif self.stack2==[]:
            # 依次stack1出,stack2进,return 出
            for i in range(len(self.stack1)):
                self.stack2.append(self.stack1.pop())
            return self.stack2.pop()
        
全部评论

相关推荐

不愿透露姓名的神秘牛友
06-24 14:18
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在午休:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
董春花_:真诚无罪,别听评论区那个清华的。按他的逻辑,你有分寸人觉得你是不想来,你积极热情人觉得你太想来,你好骗人就可你养鱼,你不好骗人觉得你服从性不高,合着**做啥都白扯。保持谦逊礼貌与对offer的积极性不才是最正常,也正确的做法么?招聘方的错强加到应聘者身上,***何不食肉糜。
点赞 评论 收藏
分享
感觉今年拿到大厂实习offer的人很多,光是身边同学室友都是好几个offer。由此可见,秋招得有多卷
小浪_Coding:必须卷的起飞, 应该比25更卷一点, 25已经是哀声一片了, 26会更难一点, 现在还有`很多25未找到的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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