当前位置: 首页 > news >正文

数据结构与算法-(9)---双端队列(Deque)

 

 🌈write in front🌈
🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.
🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如需转载还请通知⚠️
📝个人主页:Aileen_0v0🧸—CSDN博客
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏:Aileen_0v0🧸的PYTHON学习系列专栏——CSDN博客
🗼我的格言:"没有罗马,那就自己创造罗马~" 

 

目录

双端队列Deque🐻

双端队列的应用 - 判断回文数🦫

伪代码🦌

实现代码 🦘


双端队列Deque🐻

Dequeue特点:数据可以从队首也可以从队尾加入,也可以从两端进行移除.

                        它集成了栈和队列的能力.

                        But 双端队列 并不具有内在的LIFO或者FIFO特性

                        如果双端队列用来模拟栈或队列 需要使用者 自行维护操作的一致性.

将它的头或者尾部倒转过来我们可以将它看成是一个栈(Stack)

 

 我们可以仿照之前的栈以及队列对象的创建,我们给双端队列也创建一个对象

忘记的小伙伴可以点击👉🔗http://t.csdnimg.cn/RfdSQ

#创建一个双端队列(Dequeue)
class Dequeue:#定义一个初始化函数然后创建一个空列表用于传递数据itemsdef __init__(self):self.items = []#在队首加入元素itemsdef addFront(self,item):self.items.append(item)#在队尾加入元素itemsdef addRear(self,items):self.items.insert(0,item)#从队首移除数据,返回值为移除数据项def removeFront(self):return self.items.pop()#从队尾移除数据,返回移除数据项def removeRear(self):return self.items.pop(0)#判断列表是否为空def isEmpty(self):return self.items == []#返回Dequeue中包含的数据项的个数def size(self):return len(self.items)

双端队列:我们还是采用List去实现它,List下标0作为deque的尾端,List下标-1作为deque的首端

操作复杂度: addFront  / removeFront   的复杂度是 O(1)

                    addRear  / removeRear    的复杂度是 O(n)

双端队列的应用 - 判断回文数🦫

之前看过我的Python每日一练的小伙伴一定记得之前做过同样的题,只是我们用的是列表切片进行反转,不记得的小伙伴可以点击👉🔗http://t.csdnimg.cn/7J0fF

输入一个数,判断它是不是回文数。12321,radar是回文数,正着读和反着读都一样.

伪代码🦌

Python面向对象编程允许在类外的函数里面进行实例化对象。

这是因为Python中一切皆对象,实例化对象也只是调用类的构造函数来创建一个对象而已,因此可以在任何地方进行实例化操作。

在类外部实例化对象的作用提高程序的灵活性和可维护性。有时候我们会需要在多个函数或模块中使用同一个对象,如果每个函数或模块都单独创建一个对象,就会增加对象的数量,造成不必要的开销。而在类外部实例化一个对象,然后将该对象传递给多个函数或模块使用,则可以大大减少对象的数量,提高程序的效率和可维护性。

下面是一个简单的例子,演示了在类外部实例化对象的方法及其作用:

class Person:def __init__(self, name):self.name = namedef say_hello(self):print("Hello, my name is", self.name)def greet(person):person.say_hello()# 在函数外部实例化对象
p = Person("Bob")# 将对象传递给另外一个函数使用
greet(p)  # "Hello, my name is Bob"

在上面的例子中,我们在函数外部实例化了一个Person对象,然后将该对象传递给greet()函数,该函数使用该对象的say_hello()方法来打印出问候语。这种方法可以避免在greet()函数中重复创建Person对象,提高程序的效率和可维护性。

实现代码 🦘

#创建一个双端队列(Dequeue)
class Dequeue:#定义一个初始化函数然后创建一个空列表用于传递数据itemsdef __init__(self):self.items = []#判断列表是否为空def isEmpty(self):return self.items == []#在队首加入元素itemsdef addFront(self,item):self.items.append(item)#在队尾加入元素itemsdef addRear(self,item):self.items.insert(0,item)#从队首移除数据,返回值为移除数据项def removeFront(self):return self.items.pop()#从队尾移除数据,返回移除数据项def removeRear(self):return self.items.pop(0)#判断列表是否为空def isEmpty(self):return self.items == []#返回Dequeue中包含的数据项的个数def size(self):return len(self.items)#palindrome - 回文检查
def  pal_checker (ps):#实例化对象d = Dequeue()for char in  ps:d.addRear(char)#假设元素左右相等still_equal = True#依次取出首尾元素进行判断,然后再判断它是否满足 :# 奇数个元素的时候,双端队列里面还剩下一个元素#偶数个元素的时候,双端队列里面没有元素while d.size() > 1 and still_equal :#从队首取出一个元素first = d.removeFront()#从队尾取出一个元素last = d.removeRear()if first != last:still_equal = Falsereturn still_equalprint(pal_checker ("上海自来水来自海上"))
print(pal_checker ("110110"))

 

相关文章:

数据结构与算法-(9)---双端队列(Deque)

🌈write in front🌈 🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流. 🆔本文由Aileen_0v0🧸 原创 CSDN首发🐒 如…...

DTI综述(更新中)

Deep Learning for drug repurposing:methods,datasets,and applications 综述读完,觉得少了点东西,自己写个DTI综述 Databases(包括但不限于文章中的) DATABASEDESCRIBEBindingDB有详细的drug信息和对应的target&a…...

封装一个滑块控制灯光组件

效果如下gif 只进行了基础的事件和布局,可优化的地方:luminance-box这个div加上后,由于和slider-run-way都是absolute定位,导致slider-run-way的点击事件无法设置值,只能通过滑块设置。暂时想不到咋处理,有…...

flutter循环

flutter for循环&#xff1a; Wrap(children: <Widget>[for (int i 0; i < (xx.yy.data?.items?.length ?? 0); i)TextButton(onPressed: (){}, child: Text("${xx.yy.data?.items?[i].name.toString()} (${xx.yy.data?.items?[i].connId.toString()})…...

2.3 如何使用FlinkSQL读取写入到JDBC(MySQL)

1、JDBC SQL 连接器 FlinkSQL允许使用 JDBC连接器&#xff0c;向任意类型的关系型数据库读取或者写入数据 添加Maven依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-jdbc</artifactId><version>3.1…...

Flink日志收集到数据库/kafka

引言 我们做项目过程中发现flink日志不同模式启动&#xff0c;存放位置不同&#xff0c;查找任务日志很不方便&#xff0c;具体问题如下&#xff1a; 原始flink的日志配置文件log4j-cli.properties appender.file.append false&#xff0c;取消追加&#xff0c;直接覆盖掉上…...

Go项目踩坑:go get下载超时,goFrame框架下的go项目里将vue项目的dist同步打包发布,go项目打包并压缩

Go项目踩坑&#xff1a;go get下载超时&#xff0c;goFrame框架下的go项目里将vue项目的dist同步打包发布&#xff0c;go项目打包并压缩 go get下载超时goFrame打包静态资源vue项目打包gf pack生成go文件 静态资源使用打包发布go项目交叉编译&#xff0c;省略一些不必要的信息通…...

DataCon【签到题】挖矿流量检测

【签到题】挖矿流量检测 文章目录 答案【多选】1. 个人电脑中了挖矿病毒通常有以下哪些表现&#xff1f;【单选】2. 在典型挖矿场景中&#xff0c;矿工和矿池之间目前最常用的通信协议是哪一个&#xff1f;【单选】3. 目前的虚拟货币挖矿场景中&#xff0c;最常采用的是哪种共识…...

Vivado详细使用教程 | LED闪烁示例

文章目录 整体流程第一步&#xff1a;新建工程第二步&#xff1a;设计输入第三步&#xff1a;功能仿真第四步&#xff1a;分析与综合第五步&#xff1a;约束输入第六步&#xff1a;设计实现第七步&#xff1a;下载比特流 整体流程 打开软甲------>新建工程------->设计输…...

一些经典的神经网络(第17天)

1. 经典神经网络LeNet LeNet是早期成功的神经网络&#xff1b; 先使用卷积层来学习图片空间信息 然后使用全连接层来转到到类别空间 【通过在卷积层后加入激活函数&#xff0c;可以引入非线性、增加模型的表达能力、增强稀疏性和解决梯度消失等问题&#xff0c;从而提高卷积…...

Hadoop-HA-Hive-on-Spark 4台虚拟机安装配置文件

Hadoop-HA-Hive-on-Spark 4台虚拟机安装配置文件 版本号步骤hadoopcore-site.xmlhdfs-site.xmlmapred-site.xmlslavesworkersyarn-site.xml hivehive-site.xmlspark-defaults.conf sparkhdfs-site.xmlhive-site.xmlslavesyarn-site.xmlspark-env.sh 版本号 apache-hive-3.1.3-…...

Hutool工具类参考文章

Hutool工具类参考文章 日期&#xff1a; 身份证&#xff1a;...

【 Python ModuleNotFoundError: No module named ‘xxx‘可能的解决方案大全】

Python ModuleNotFoundError: No module named ‘xxx‘可能的解决方案大全 本文主要介绍了Python ModuleNotFoundError: No module named ‘xxx‘可能的解决方案大全&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#x…...

eclipse 配置selenium环境

eclipse环境 安装selenium的步骤 配置谷歌浏览器驱动 Selenium安装-如何在Java中安装Selenium chrome驱动下载 eclipse 启动配置java_home&#xff1a; 在eclipse.ini文件中加上一行 1 配置java环境&#xff0c;网上有很多教程 2 下载eclipse&#xff0c;网上有很多教程 ps&…...

数据挖掘(6)聚类分析

一、什么是聚类分析 1.1概述 无指导的&#xff0c;数据集中类别未知类的特征&#xff1a; 类不是事先给定的&#xff0c;而是根据数据的相似性、距离划分的聚类的数目和结构都没有事先假定。挖掘有价值的客户: 找到客户的黄金客户ATM的安装位置 1.2区别 二、距离和相似系数 …...

在启智平台上安装anconda

安装Anaconda3-5.0.1-Linux-x86_64.sh python版本是3.6 在下面的网站上找到要下载的anaconda版本&#xff0c;把对应的.sh文件下载下来 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 把sh文件压缩成.zip文件&#xff0c;拖到启智平台的调试页面 上传到平台上 un…...

棒球省队建设实施办法·棒球1号位

棒球省队建设实施办法 1. 建设目标与原则 提升棒球省队整体竞技水平 为了提升棒球省队整体竞技水平&#xff0c;我们需要采取一系列有效的措施。 首先&#xff0c;我们应该加强对棒球运动的投入和关注。各级政府和相关部门应加大对棒球运动的经费投入&#xff0c;提高球队的…...

架构案例2017(五十二)

第5题 阅读以下关于Web系统架构设计的叙述&#xff0c;在答题纸上回答问题1至问题3.【说明】某电子商务企业因发展良好&#xff0c;客户量逐步增大&#xff0c;企业业务不断扩充&#xff0c;导致其原有的B2C商品交易平台己不能满足现有业务需求。因此&#xff0c;该企业委托某…...

给四个点坐标计算两条直线的交点

文章目录 1 chatgpt42、文心一言3、星火4、Bard总结 我使用Chatgpt4和文心一言、科大讯飞星火、google Bard 对该问题进行搜索&#xff0c;分别给出答案。先说结论&#xff0c;是chatgpt4和文心一言给对了答案&#xff0c; 另外两个部分正确。 问题是&#xff1a;python 给定四…...

从入门到进阶 之 ElasticSearch SpringData 继承篇

&#x1f339; 以上分享 从入门到进阶 之 ElasticSearch SpringData 继承篇&#xff0c;如有问题请指教写。&#x1f339;&#x1f339; 如你对技术也感兴趣&#xff0c;欢迎交流。&#x1f339;&#x1f339;&#x1f339; 如有需要&#xff0c;请&#x1f44d;点赞&#x1f…...

IEEE会议论文避雷指南:如何用GSview+Photoshop搞定EPS图片压缩与特殊字符命名

IEEE会议论文图片处理全攻略&#xff1a;从格式转换到命名规范 第一次投稿IEEE会议的新手研究者们&#xff0c;往往会在图片处理环节栽跟头——明明内容扎实、实验充分&#xff0c;却因为技术细节问题被编辑退回修改。这不是学术能力的问题&#xff0c;而是对印刷出版标准的不熟…...

Phi-4-mini-reasoning惊艳效果:线性代数矩阵运算推理全过程展示

Phi-4-mini-reasoning惊艳效果&#xff1a;线性代数矩阵运算推理全过程展示 1. 模型概述 Phi-4-mini-reasoning是一款仅有3.8B参数的轻量级开源模型&#xff0c;专为数学推理、逻辑推导和多步解题等强逻辑任务设计。这款模型由微软Azure AI Foundry开发&#xff0c;主打"…...

麦克风效率革命:MicMute让静音操作提速90%的终极体验升级

麦克风效率革命&#xff1a;MicMute让静音操作提速90%的终极体验升级 【免费下载链接】MicMute Mute default mic clicking tray icon or shortcut 项目地址: https://gitcode.com/gh_mirrors/mi/MicMute 你是否经历过线上会议中手忙脚乱寻找静音按钮的窘迫&#xff1f;…...

教你把歌曲原声调小的5个技巧!简单又好用 赶紧收藏

在日常生活中&#xff0c;调整歌曲原声调小是非常常见的音频处理需求。比如在剪辑视频时&#xff0c;可能需要降低背景音乐的音量以突出旁白&#xff1b;或者在制作播客时&#xff0c;需要平衡人声与背景音的比例&#xff1b;还有在手机上听音乐时&#xff0c;某些歌曲突然出现…...

手把手教你用Python处理脑电信号:从MRCP到SMR的实战指南

手把手教你用Python处理脑电信号&#xff1a;从MRCP到SMR的实战指南 脑电信号处理一直是神经科学和脑机接口领域的热门研究方向。对于开发者而言&#xff0c;掌握Python处理脑电信号的技能不仅能提升科研效率&#xff0c;还能为医疗辅助设备开发打下坚实基础。本文将带你从零开…...

基于Flowable全局监听器实现智能节点跳过:告别重复审批

1. 为什么需要智能跳过重复审批节点&#xff1f; 想象一下这样的场景&#xff1a;你设计了一个采购审批流程&#xff0c;部门经理需要先后审批"采购申请"和"采购确认"两个节点。但当这两个节点都分配给同一位经理时&#xff0c;他会在系统里看到两个完全相…...

Typora搭配PicGo实现Markdown图片自动上传到Gitee的保姆级教程

Typora与PicGo联动&#xff1a;打造Gitee图床自动化工作流 对于长期使用Markdown写作的技术博主和文档工程师来说&#xff0c;图片管理始终是个痛点。本地图片导致文档迁移困难&#xff0c;第三方图床存在失效风险&#xff0c;而手动上传又严重打断创作流程。这套基于TyporaPic…...

7个效率倍增技巧:StarRailAssistant自动化工具解放崩坏星穹铁道玩家双手

7个效率倍增技巧&#xff1a;StarRailAssistant自动化工具解放崩坏星穹铁道玩家双手 【免费下载链接】StarRailAssistant 崩坏&#xff1a;星穹铁道自动化 | 崩坏&#xff1a;星穹铁道自动锄大地 | 崩坏&#xff1a;星穹铁道锄大地 | 自动锄大地 | 基于模拟按键 项目地址: ht…...

从BIOS到BMC:手把手拆解Redfish协议在服务器开机时的‘数据握手’全过程

从BIOS到BMC&#xff1a;手把手拆解Redfish协议在服务器开机时的‘数据握手’全过程 凌晨3点的数据中心&#xff0c;一台刚上电的服务器正以毫秒级速度完成自检。在这不足5秒的瞬间里&#xff0c;BIOS与BMC之间正通过Redfish协议进行着精密的数据舞蹈——这不是简单的信息交换&…...

手把手调参:BLDC有感启动的PWM占空比怎么给?从零到平滑启动的实战避坑指南

手把手调参&#xff1a;BLDC有感启动的PWM占空比实战指南 电机启动瞬间的电流冲击声像极了新手司机的"熄火"与"窜车"——要么纹丝不动&#xff0c;要么突然暴冲。这种尴尬在BLDC电机调试中尤为常见&#xff0c;特别是当负载特性未知时&#xff0c;如何设定…...