数据结构与算法-(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循环: 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连接器,向任意类型的关系型数据库读取或者写入数据 添加Maven依赖 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-jdbc</artifactId><version>3.1…...
Flink日志收集到数据库/kafka
引言 我们做项目过程中发现flink日志不同模式启动,存放位置不同,查找任务日志很不方便,具体问题如下: 原始flink的日志配置文件log4j-cli.properties appender.file.append false,取消追加,直接覆盖掉上…...
Go项目踩坑:go get下载超时,goFrame框架下的go项目里将vue项目的dist同步打包发布,go项目打包并压缩
Go项目踩坑:go get下载超时,goFrame框架下的go项目里将vue项目的dist同步打包发布,go项目打包并压缩 go get下载超时goFrame打包静态资源vue项目打包gf pack生成go文件 静态资源使用打包发布go项目交叉编译,省略一些不必要的信息通…...
DataCon【签到题】挖矿流量检测
【签到题】挖矿流量检测 文章目录 答案【多选】1. 个人电脑中了挖矿病毒通常有以下哪些表现?【单选】2. 在典型挖矿场景中,矿工和矿池之间目前最常用的通信协议是哪一个?【单选】3. 目前的虚拟货币挖矿场景中,最常采用的是哪种共识…...
Vivado详细使用教程 | LED闪烁示例
文章目录 整体流程第一步:新建工程第二步:设计输入第三步:功能仿真第四步:分析与综合第五步:约束输入第六步:设计实现第七步:下载比特流 整体流程 打开软甲------>新建工程------->设计输…...
一些经典的神经网络(第17天)
1. 经典神经网络LeNet LeNet是早期成功的神经网络; 先使用卷积层来学习图片空间信息 然后使用全连接层来转到到类别空间 【通过在卷积层后加入激活函数,可以引入非线性、增加模型的表达能力、增强稀疏性和解决梯度消失等问题,从而提高卷积…...
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工具类参考文章 日期: 身份证:...
【 Python ModuleNotFoundError: No module named ‘xxx‘可能的解决方案大全】
Python ModuleNotFoundError: No module named ‘xxx‘可能的解决方案大全 本文主要介绍了Python ModuleNotFoundError: No module named ‘xxx‘可能的解决方案大全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值&#x…...
eclipse 配置selenium环境
eclipse环境 安装selenium的步骤 配置谷歌浏览器驱动 Selenium安装-如何在Java中安装Selenium chrome驱动下载 eclipse 启动配置java_home: 在eclipse.ini文件中加上一行 1 配置java环境,网上有很多教程 2 下载eclipse,网上有很多教程 ps&…...
数据挖掘(6)聚类分析
一、什么是聚类分析 1.1概述 无指导的,数据集中类别未知类的特征: 类不是事先给定的,而是根据数据的相似性、距离划分的聚类的数目和结构都没有事先假定。挖掘有价值的客户: 找到客户的黄金客户ATM的安装位置 1.2区别 二、距离和相似系数 …...
在启智平台上安装anconda
安装Anaconda3-5.0.1-Linux-x86_64.sh python版本是3.6 在下面的网站上找到要下载的anaconda版本,把对应的.sh文件下载下来 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 把sh文件压缩成.zip文件,拖到启智平台的调试页面 上传到平台上 un…...
棒球省队建设实施办法·棒球1号位
棒球省队建设实施办法 1. 建设目标与原则 提升棒球省队整体竞技水平 为了提升棒球省队整体竞技水平,我们需要采取一系列有效的措施。 首先,我们应该加强对棒球运动的投入和关注。各级政府和相关部门应加大对棒球运动的经费投入,提高球队的…...
架构案例2017(五十二)
第5题 阅读以下关于Web系统架构设计的叙述,在答题纸上回答问题1至问题3.【说明】某电子商务企业因发展良好,客户量逐步增大,企业业务不断扩充,导致其原有的B2C商品交易平台己不能满足现有业务需求。因此,该企业委托某…...
给四个点坐标计算两条直线的交点
文章目录 1 chatgpt42、文心一言3、星火4、Bard总结 我使用Chatgpt4和文心一言、科大讯飞星火、google Bard 对该问题进行搜索,分别给出答案。先说结论,是chatgpt4和文心一言给对了答案, 另外两个部分正确。 问题是:python 给定四…...
从入门到进阶 之 ElasticSearch SpringData 继承篇
🌹 以上分享 从入门到进阶 之 ElasticSearch SpringData 继承篇,如有问题请指教写。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有需要,请👍点赞…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
QT3D学习笔记——圆台、圆锥
类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体(对象或容器)QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质(定义颜色、反光等)QFirstPersonC…...
LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》
这段 Python 代码是一个完整的 知识库数据库操作模块,用于对本地知识库系统中的知识库进行增删改查(CRUD)操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 📘 一、整体功能概述 该模块…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
6.9-QT模拟计算器
源码: 头文件: widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMouseEvent>QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACEclass Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *parent nullptr);…...
统计学(第8版)——统计抽样学习笔记(考试用)
一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征(均值、比率、总量)控制抽样误差与非抽样误差 解决的核心问题 在成本约束下,用少量样本准确推断总体特征量化估计结果的可靠性(置…...
Element-Plus:popconfirm与tooltip一起使用不生效?
你们好,我是金金金。 场景 我正在使用Element-plus组件库当中的el-popconfirm和el-tooltip,产品要求是两个需要结合一起使用,也就是鼠标悬浮上去有提示文字,并且点击之后需要出现气泡确认框 代码 <el-popconfirm title"是…...


