美文网首页
LeetCode-225-用队列实现栈

LeetCode-225-用队列实现栈

作者: 阿凯被注册了 | 来源:发表于2020-10-29 08:06 被阅读0次
image.png

解题思路:

  1. 维护两个队列q1和q2,当推入队列的数据为[1,2,3],推入1时,q1为空,直接推入q1.append(1)
  2. 当推入2时,先将q1中的1推入q2,再将2推入q1,然后将q2中1推入q1,此时q1中数据的顺序为[2,1]
  3. 推入3时,同上一步,将q2作为中转站,类似汉诺塔的最后一步,先将q1[2,1]推入q2,接着将3推入q1,然后将q2中的数据[2,1]推入q1,此时q1的数据顺序为[3,2,1]实现了栈的先进后出规律;
  4. 未操作时,队列q2始终为空,只是作为中转站;
  5. 因此pop操作时,直接从q1中取出第一个数;
  6. 判断empty时,只需判断q1中是否有数据即可。

Python3代码:

class MyStack:

    def __init__(self):
        """
        Initialize your data structure here.
        """
        self.q1 = collections.deque()
        self.q2 = collections.deque()


    def push(self, x: int) -> None:
        """
        Push element x onto stack.
        """
        # 若q1有数据,则推入q2
        while self.q1:
            self.q2.append(self.q1.popleft())
        # 将x推入q1
        self.q1.append(x)
        # 将q2推入q1
        while self.q2:
            self.q1.append(self.q2.popleft())


    def pop(self) -> int:
        """
        Removes the element on top of the stack and returns that element.
        """
        if self.q1:
            return self.q1.popleft()
        else:
            return -1


    def top(self) -> int:
        """
        Get the top element.
        """
        if self.q1:
            return self.q1[0]


    def empty(self) -> bool:
        """
        Returns whether the stack is empty.
        """
        if not self.q1:
            return True
        return False


# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()

相关文章

  • LeetCode-225-用队列实现栈

    解题思路: 维护两个队列q1和q2,当推入队列的数据为[1,2,3],推入1时,q1为空,直接推入q1.appen...

  • 数据结构——栈和队列

    用数组实现栈和队列 用栈实现队列 用队列实现栈 栈和队列的经典算法题最小间距栈宠物收养所 数组实现栈和队列 用数组...

  • leecode刷题(26)-- 用栈实现队列

    leecode刷题(26)-- 用栈实现队列 用栈实现队列 使用栈实现队列的下列操作: push(x) -- 将一...

  • C语言第七次作业:链表

    707. 设计链表 空指针 空节点 225. 用队列实现栈 链式存储栈 双队列实现栈 232. 用栈实现队列 链式...

  • 队列之-队列实现栈

    一、队列实现栈核心算法概述 之前已经描述过了用栈实现队列的功能,见栈系列之-实现队列,那么同样队列也可以用来实现栈...

  • 38_两个有趣的问题

    关键词:通过栈实现队列、通过队列实现栈 0. 通过栈实现队列 用栈实现队列等价于用后进先出的特性实现先进先出的特性...

  • 栈&队列

    一、栈&队列总结 栈/队列的应用接雨水验证栈序列滑动窗口的最大值 栈/队列的特殊实现用两个栈实现队列用两个队列实现...

  • 面试题9: 用两个栈实现队列

    9-1 用两个栈实现队列 9-2 用两个队列实现栈

  • LeetCode 每日一题 [12] 用队列实现栈

    LeetCode 用队列实现栈 [简单] 使用队列实现栈的下列操作: push(x) -- 元素 x 入栈pop(...

  • Python学习教程:用队列实现栈

    接着上一期跟大家说的用栈实现队列,这期的Python学习教程跟大家讲用队列实现栈 题目:使用队列实现栈的下列操作:...

网友评论

      本文标题:LeetCode-225-用队列实现栈

      本文链接:https://www.haomeiwen.com/subject/jsthvktx.html