题解 | #用两个栈实现队列# -- [Python3]

用两个栈实现队列

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

原理

  1. 栈1 用来存储 输入Push 的 元素
  2. 栈2 用来存储 反转(因为队列的特性为先进先出,而栈为先进后出,所以需要反转)后的元素,以便Pop
  3. 当栈2 为空时,则需要从栈1中copy反转过后的元素,再进行pop操作
    class Solution:
     def __init__(self):
         self.stack1 = []
         self.stack2 = []
     def push(self, node):
         self.stack1.append(node)
     def pop(self):
         if not self.stack2:
    #             反转 栈1 以便复制到 栈2中
             self.stack1.reverse()
    #             复制到 栈2 中
             self.stack2 = self.stack1.copy()
    #             因为已经复制过, 清空栈1
             self.stack1.clear()
         return self.stack2.pop()
全部评论

相关推荐

马上要带我人生中的第一个实习生了,想问问大家都喜欢什么的mentor?好让我有个努力的目标
拒绝996的劳伦斯很勇敢:看得见目标且护犊子的 具体就是明确告诉组员要干什么,然后当别的组甩dirty work时能护的组自家新人
点赞 评论 收藏
分享
ALEX_BLX:虽然说聊天记录不可信,不过这个趋势确实如此但我觉得也要想到一点就是卷后端的人里真正有“料”的人又有多少,我说的这个料都不是说一定要到大佬那种级别,而是就一个正常的水平。即使是现在也有很多人是跟风转码的,2-3个月速成后端技术栈的人数不胜数,但今时不同往日没可能靠速成进大厂了。这种情况就跟考研一样,你能上考场就已经打败一半的人了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务