zoukankan      html  css  js  c++  java
  • 剑指offer-JZ5 用两个栈实现队列

    难度:简单

    知识点:栈

    题目描述:

    用两个栈来实现一个队列,分别完成在队列尾部插入整数(push)和在队列头部删除整数(pop)的功能。 队列中的元素为int类型。保证操作合法,即保证pop操作时队列内已有元素。

     解题思路:

    栈是先进后出,队列是先进先出。

    所以,要想实现先进先出,则需要两个栈,从栈顶至栈底,依次把元素挪入另一个栈,此时原栈顶变为栈底,原栈底变为栈顶,再对第二个栈进行存取,也就相当于实现了队列的先进先出功能。

    class Solution:
        def __init__(self):
            self.acceptStack = []
            self.outputStack = []
        def push(self, node):
            self.acceptStack.append(node)
            # write code here
        def pop(self):
            if not self.outputStack:  # A中包含元素,B中包含元素,此时需要逐个转移
                while self.acceptStack:
                    self.outputStack.append(self.acceptStack.pop())
            if self.outputStack:  # 判断,不为空的时候,返回
                return self.outputStack.pop()
            else: # A、B中都不包含元素
                return None
            # return xx

    时间复杂度和空间复杂度都是O(n)

  • 相关阅读:
    xps坐标计算
    xps文档
    xps坐标提取
    javascript
    python 类的继承
    PHP parse_url函数示例
    PHP 二维数组按照指定键排序(正序或倒叙均可)
    PHP substr()函数参数解释 通俗易懂
    PHP四大经典排序算法源码
    X友 NC 远程命令执行
  • 原文地址:https://www.cnblogs.com/LLLLgR/p/15017707.html
Copyright © 2011-2022 走看看