剑指offer:05 用两个栈实现队列

题目描述

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

基本思想

两个栈s1和s2,入队就将元素入s1栈,出队时,如果s2中为空,将s1里全部元素弹出压入s2,再弹出;如果s2中不为空,则弹出,直到s2为空

Python

class Solution:

    def __init__(self):

        self.s1 = []

        self.s2 = []

    def push(self, node):

        # write code here

        self.s1.append(node)

    def pop(self):

        # return

        if self.s2: #s2不为空

            return self.s2.pop()

        elif not self.s1: #s1为空

            return None

        else:

            while self.s1: # s2为空,s1不为空

                self.s2.append(self.s1.pop())

            return self.s2.pop()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 题目描述: · 用两个栈来实现一个队列,完成队列的入队(push)和出队(pop)操作。 队列中的元素为int类型...
    FloatingIsland阅读 190评论 0 0
  • 用两个栈实现队列: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 思路:见...
    Buyun0阅读 197评论 0 0
  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 3,296评论 0 9
  • 1. 两个栈实现一个队列 栈的先进后出特性非常适合处理多层闭合问题,比如括号处理、函数的递归调用、树的遍历、汉诺塔...
    CXYMichael阅读 4,418评论 0 0
  • 所謂的人生,我們都是來學習的,這些年來,人來人往,最後都明白,我們都擁有不了別人,也佔有不了別人,但卻必須透過別人...
    宝二爺阅读 234评论 0 0

友情链接更多精彩内容