【Python3】【力扣题】225. 用队列实现栈

news2025/1/18 7:32:14

【力扣题】题目描述:

栈:线性集合。后进先出。

队列:线性集合。先进先出。也有双端队列和循环队列。

【Python3】代码:

1、解题思路:两个队列。队列1存储元素,队列2辅助。元素从队尾进入队列2,已在队列1的元素依次从队头取出进入队列2,两队列互换,则队列1中队头的元素是后进入的元素。

知识点:collections.deque():队列容器。(注:queue模块用于线程通信,实现多生产者、多消费者队列)

              collections.deque().append():往队尾添加元素。

              collections.deque().popleft():从队头移除元素,并返回该元素。

补充:空队列,返回False。

class MyStack:

    def __init__(self):
        from collections import deque
        self.aqueue = deque()

    def push(self, x: int) -> None:
        n = len(self.aqueue)
        self.aqueue.append(x)
        for _ in range(n):
            self.aqueue.append(self.aqueue.popleft())

    def pop(self) -> int:
        return self.aqueue.popleft()

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

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

# 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()

2、解题思路:一个队列。元素从队尾进入队列,之前的元素依次从队头取出从队尾进入,则队列中队头的元素是后进入的元素。

知识点:a,b=b,a:即a和b的值互换。例如:a=1;b=2;a,b=b,a;则结果a=2,b=1。

class MyStack:

    def __init__(self):
        from collections import deque
        self.aqueue_1 = deque()
        self.aqueue_2 = deque()

    def push(self, x: int) -> None:
        self.aqueue_2.append(x)
        # while self.aqueue_1:
        for _ in range(len(self.aqueue_1)):
            self.aqueue_2.append(self.aqueue_1.popleft())
        self.aqueue_1,self.aqueue_2 = self.aqueue_2,self.aqueue_1

    def pop(self) -> int:
        return self.aqueue_1.popleft()

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

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

# 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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1166108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

身份证二要素核验API:提高身份验证的精确性与效率

前言 在数字时代,身份验证已经成为各行各业的重要环节。无论是金融交易、电子商务还是在线服务,确保用户身份的准确性至关重要。身份证二要素核验API,作为一种先进的技术解决方案,正在逐渐崭露头角,为身份验证带来了精…

springboot中使用redis管理session

前言 使用软件: redis: linux版本下载 windows版本下载 安装redis 下载redis http://download.redis.io/releases/ 源码安装redis(ubuntu) #将指定版本的redis上传到服务器#解压 sudo tar -xzvf redis-6.2.4.tar.gzcd re…

家用小型洗衣机哪款性价比高?公认好用四款内衣洗衣机推荐

小型的内衣洗衣机由于体积小巧,而且实用,非常适合没有太多空闲时间的上班族以及小型住户的使用。想要挑选到一款能够满足每日清洗需要,同时拥有便携与高效率的小型内衣洗衣机,也许会让你选择得有些烦恼。我们为大家挑选了一些性价…

仿真建模工具:AnyLogic 8.8.5 Crack

多方法建模环境,使用所有三种现代模拟方法开发模型: 系统动力学 这三种方法可以任意组合使用,通过一种软件来模拟任何复杂性的业务系统。在 AnyLogic 中,您可以使用各种可视化建模语言:流程图、状态图、动作图以及库存…

数据结构与算法之美学习笔记:14 | 排序优化:如何实现一个通用的、高性能的排序函数?

目录 前言如何选择合适的排序算法?如何优化快速排序?举例分析排序函数 前言 本节课程思维导图: 几乎所有的编程语言都会提供排序函数,比如 C 语言中 qsort(),C STL 中的 sort()、stable_sort(),还有 Java …

游戏中的-雪花算法

1、什么是雪花算法? 雪花算法(Snowflake)是一种生成唯一ID的算法。在游戏开发过程中会为玩家生成唯一的id,或者玩家获得一件装备,为这件装备生成唯一的Id,将此角色和装备的Id保存于数据库当中。 全局唯一性…

Spring-AOP-面向切面编程

文章目录 目录 文章目录 前言 一 . 场景设定和问题复现 二 . 解决技术[代理模式] 2.1 代理模式 2.2 静态代理 2.3 动态代理 三 . 面向切面编程思想(AOP) 3.1 面向切面编程思想 3.2 AOP 思想的应用场景 3.3 AOP术语名词介绍 3.3.1 横切关注点 3.3.2 通知(增强) 3…

面试算法52:展平二叉搜索树

题目 给定一棵二叉搜索树,请调整节点的指针使每个节点都没有左子节点。调整之后的树看起来像一个链表,但仍然是二叉搜索树。 分析 看起来需要按照节点的值递增的顺序遍历二叉搜索树中的每个节点,并将节点用指向右子节点的指针连接起来。这…

观测云产品更新 | 单点登录新增 OIDC / Oauth2.0 协议、数据转发优化、场景优化等

观测云更新 数据转发 1. 新增【观测云】选项,支持将数据保存到观测云的对象存储,计费逻辑按天出账,每天统计存储的压缩后的数据大小,按照每 GB 0.007 元出具对应账单。 2. 数据转发菜单导航位置调整至【管理】模块,…

ActiveMQ是什么?-九五小庞

MQ是消息中间件,是一种在分布式系统中应用程序借以传递消息的媒介,常用的有ActiveMQ,RabbitMQ,kafka。ActiveMQ是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。特点:1、支持多种语言…

黑色星期五来袭,Ozon为你提供丰富的推广工具和资源,助你实现销售突破!

Ozon的“黑色星期五”促销活动为卖家们提供了丰富的推广工具和资源,以确保他们的商品在促销期间获得最大的曝光度和销售额。卖家们应该充分利用这些机会,制定合适的折扣策略,并确保他们的商品在Ozon平台上脱颖而出。 为了推广Ozon黑色星期五促…

AI、万圣节与聊斋;用AI写甜蜜恋爱小暖文;AGI新趋势与机会洞察;Meta官方Llama 2入门指南 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 👀 时代杂志评选2023年度最佳发明,AI赛道入选名单 https://time.com/collection/best-inventions-2023 10 月 24 日&#xff…

java那些数据类型是安全加锁的。

我还没有反应过来,首先考虑的是基本数据类型,因为底层这块儿是在没有看过,Spring是被final修饰不可变的。后来才明白,原来是问你线程安全问题。 锁数据类型。 其实就是被synchronized修饰过的数据类型。 例如StringBuffer 底层 …

国外住宅IP代理测评选择的8个方法,稳定的海外IP哪个靠谱?

一、国外住宅IP代理是什么? 代理服务器充当您和互联网之间的网关。它是一个中间服务器,将最终用户与他们浏览的网站分开。如果您使用国外代理IP,互联网流量将通过国外代理服务器流向您请求的地址。然后,请求通过同一个代理服务器…

C++类和对象下(初始化列表,静态成员,explicit关键字,友元)

C类和对象下[初始化列表,静态成员,explicit关键字,友元] 一.初始化列表1.为什么会有初始化列表2.初始化列表的语法形式3.没有默认构造函数的自定义成员变量4.初始化列表是成员变量定义的地方5.初始化列表可以跟函数体内定义搭配使用6.初始化列表执行的顺序7.总结建议 二.静态成…

KT6368A蓝牙芯片发送指令设置中文蓝牙名是乱码 这个要如何处理

目录 一、KT6368A蓝牙芯片为什么发送at指令设置中文spp蓝牙名,是乱码 这个要如何处理 第一步,在pc端新建一个txt文档,将您需要的名字,汉字打出来,另存为UTF-8编码 第二步,使用winhex软件,当然…

JVS智能BI(自助式商业分析)本周更新内容已上线

在数据分析与可视化的世界中,我们始终在寻找新的创新与突破,以帮助用户更高效、更直观地理解数据,洞察业务的深层逻辑。本周更新包含了一系列的新功能、优化及bug修复,更新如下: 新增: 1.新增图表分类功能&#xff1…

宝宝洗衣机哪个牌子质量好?小型洗衣机质量排名

说起洗衣服,大部分的家庭都会备有一台洗衣机,不过如果有婴儿的话,贴心的宝妈宝爸也会特意将宝宝的衣服与大人的衣服分开来进行清洗。很多妈妈都会自己动手洗。由于婴儿的皮肤比较娇嫩、敏感,所以儿童的衣物与成人的衣物混合使用&a…

视频特效制作软件:After Effects 2024 mac中文版新增功能

After Effects 2024 mac是一款专业的视频特效和动态图形设计软件,它可以帮助用户创建各种令人惊叹的视觉效果,例如粒子系统、合成特效、绿屏抠像等。该软件支持动画制作,包括关键帧动画、形状动画、运动跟踪等工具,可以创建复杂的…

数据库实验报告(五)

1、实验目的 (1) 掌握对聚集函数的使用 (2) 掌握对分组的使用 (3) 掌握非关联子查询的用法,了解相关的连接谓词 2、实验预习与准备 (1) 了解Max&#x…