美文网首页
栈与队列的转换

栈与队列的转换

作者: madao756 | 来源:发表于2020-03-07 13:33 被阅读0次

0X00 模板题目

使用栈翻转的性质, 把栈翻转两次可以做到 FIFO, 在代码中使用了两个栈, 一个用来 Push, 一个用来 Pop

class MyQueue:

    def __init__(self):
        self.popStack = []
        self.pushStack = []

    def push(self, x: int) -> None:
        self.pushStack.append(x)
        
    def pop(self) -> int:
        # 要等 popStack 空了才能转移
        if self.popStack:
            return self.popStack.pop()
        
        while self.pushStack:
            self.popStack.append(self.pushStack.pop())

        return self.popStack.pop()

    def peek(self) -> int:
        if self.popStack:
            return self.popStack[-1]
        
        while self.pushStack:
            self.popStack.append(self.pushStack.pop())
            
        return self.popStack[-1]


    def empty(self) -> bool:
        return not self.popStack and not self.pushStack

这个稍微难一点, 本质就是 popleft 整个队列, 把第一个元素拿出来, 然后把剩下的元素放入另外一个「辅助队列」里面

再交换两个队列

from collections import deque
class MyStack:

    def __init__(self):
        self.pushQue = deque()
        self.helperQue = deque()

    def push(self, x: int) -> None:
        self.pushQue.appendleft(x)

    def pop(self) -> int:
        while len(self.pushQue) > 1:
            self.helperQue.appendleft(self.pushQue.pop())
        
        ans = self.pushQue.pop()
        self.pushQue,  self.helperQue =  self.helperQue, self.pushQue
        return ans

    def top(self) -> int:
        return self.pushQue[0]

    def empty(self) -> bool:
        return not self.pushQue

0X01 注意事项

暂无

0X02 相关题目

相关文章

  • 数据结构学习 | 队列和栈

    栈 后进先出 栈顶允许插入(压栈)、删除(弹栈) 应用:数制转换数制转换与栈 队列 先进先出 队列头部允许删除,队...

  • 栈与队列的转换

    0X00 模板题目 232. Implement Queue using Stacks 使用栈翻转的性质, 把栈翻...

  • Swift 队列&栈 相关操作

    栈 LIFO(后进先出) 队列 FIFO(先进先出) 队列与栈相互的实现 栈 - 队列实现 队列 - 栈实现 相关...

  • 算法:使用栈实现队列

    分析 栈的特性后入先出,队列的特性是先入先出,要用栈去实现一个队列,就要思考如果将一个栈转换成队列的特性。 举个例...

  • 数据结构复习

    第三章 栈和队列 一 栈 栈的类型 顺序栈 链式栈 双向栈 栈的应用 数制转换 行编辑程序 迷宫求解 表达式求值:...

  • javascript的数组Array

    创建数组及修改 类型检测 转换方法 Array栈操作 Array队列操作 Array的反转和排序 数组的连接与截取...

  • 常见数据结构

    栈、队列、数组、链表、树、哈希表 栈 与 队列 首先我们需要了解【栈】与【列队】的区别,它们的最大区别就是数据进出...

  • Algorithm小白入门 -- 队列和栈

    队列和栈队列实现栈、栈实现队列单调栈单调队列运用栈去重 1. 队列实现栈、栈实现队列 队列是一种先进先出的数据结构...

  • LeetCode刷题笔记(三)栈与队列

    三. 栈与队列 python中的栈直接用list实现,队列用deque,需要导入外部包。 155. 最小栈 题目:...

  • 实 验 四 栈和队列

    一、实验目的与要求:## 1、理解栈和队列抽象数据类型。 2、掌握栈和队列的存储结构和操作实现。 3、理解栈和队列...

网友评论

      本文标题:栈与队列的转换

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