数据结构-leetcode(设计循环队列)

news2024/10/1 5:34:00

1.学习内容:

今天 我们讲解一道能够很好的总结所学队列知识的题目---设计循环队列

 622. 设计循环队列 - 力扣(LeetCode)

 2.题目描述:

让我们设计一个队列  要求是循环的 这和我们的双向链表有些类似

让我们按要求设计出这些相对应函数 

此题目特殊之处在于 “满了就不能再插入”“循环如何判断满和空”圈起来后面要用到

 

3. 题目思路:

为了解决以上问题 我们要先设计我们的解题思路

设计循环队列,那我们是选择用数组处理还是选择用链表处理呢? 为什么?

 先给答案:  建议用数组 

为什么:  首先我们用front指向头  back指向队尾的下一个 使用链表确实可以在判断为空为满部分很快捷 我们只需要判断back->next 是否等于 front即可 但是唯独在取队尾时不方便 这时候我们可以选择采用双向链表 或者增加一个back->prev的指针来表示上一个 但哪怕是采用双向链表 对于我们来说依旧不是很友好 我们还需要新建节点 释放等等 在难度上和数组大差不差 所以我们还是选择数组来解决

 首先,我们要解决一开始提到的问题------“满了就不能再插入”“循环如何判断满和空”

 我们有两种解决方案

先上示意图

1.  采用size  新增加一个size  size==0时 也就是front==back为空  size != 0 就是满

 2.采用新开辟一个空间 因为我们使back指向队尾的下一个 所以每次赋值后++back  

所以当  (back+1)% (k+1) == front 时就是满的情况 黄色位置就表示插入满后back的指向

此时就可以完美解决无法判断满和空的区别

 

 

 

 接下来我们解决其他函数:插入和删除

首先进行插入判断: 为空不能插入 返回false   back指向下一个位置++  

核心:  当我的back小于我开辟的k+1个空间时 怎么%取的都是back的下标

但当他满了的时候 需要让他的下标重新返回0  所以 obj->back %= (obj->k+1);是专门为返回原下标也就是他满了的时候准备的 同理 front也一样 不进行二次赘述

第三重点:返回rear

 有两种表示方法 上面的很好理解 就是back为空或者满直接返回队尾元素

重点是下面的

这个表示相当于在原先back满了要循环的情况下  不进行循环 直接在后面添加

也就是back为0的情况下       当back为0  back-1就代表数组下标越界 

这个时候为他加上我的空间长度 k+1  再%k+1    就可以返回任意情况 包括front不在第一位

因为如果back没满时     back-1  %   k+1   就会直接返回back-1 

而   back == 0      k+1就发挥作用了    

以上就是本题的大致讲解 下面将附下全代码仅供参考

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

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

相关文章

【C++】特殊类设计 {不能被拷贝的类;只能在堆上创建的类;只能在栈上创建的类;不能被继承的类;单例模式:懒汉模式,饿汉模式}

一、不能被拷贝的类 设计思路: 拷贝只会发生在两个场景中:拷贝构造和赋值重载,因此想要让一个类禁止拷贝,只需让该类不能调用拷贝构造以及赋值重载即可。 C98方案: 将拷贝构造与赋值重载只声明不定义,并…

重生奇迹mu迹辅助什么好

主流辅助一号选手:弓箭手 智弓作为最老、最有资历的辅助职业,一直都是各类玩家的首要选择。因为智力MM提供的辅助能力都是最基础、最有效、最直观的辅助。能够减少玩家对于装备的渴求度,直接提升人物的攻防,大大降低了玩家升级打…

当当网获得dangdang商品详情商品列表API 测试请求入口

item_get-获得dangdang商品详情 获取商品详情 item_search-按关键字搜索dangdang商品 获取商品列表 公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中)secretString是调用密钥api_nameString是API接口名称(包括在请…

单片机调试技巧--栈回溯

在启动文件中修改 IMPORT rt_hw_hard_fault_exceptionEXPORT HardFault_Handler HardFault_Handler PROC; get current contextTST lr, #0x04 ; if(!EXC_RETURN[2])ITE EQMRSEQ r0, msp ; [2]0 > Z1, get fault context from h…

强化学习------贝尔曼方程

目录 前言基础知识马尔可夫决策过程 (Markov decision process, MDP)回报(Return)折扣回报(Discounted Return) State Value(状态价值函数)贝尔曼方程的推导贝尔曼方程的矩阵形式Action Value(动作价值函数)贝尔曼最优公式 前言 …

Python——练习2

Python 练习一练习二练习三 练习一 (回文素数)回文素数是指一个数既是素数又是回文数。例如,131 既是素数也是回文数。数字313和717都是如此。编写程序显示前 100 个回文素数。每行显示10个数字,并且准确对齐如下所示。 2 3 5 7 11 …

网络安全等级保护收费标准?

不同省份价格会略有不同,二级等保一般不低于5万元;三级等保不低于9万元,个别省份也可能7万也能办理,根据企业实际情况和省市选定的代理机构确定。 等级保护二级? 第二级等保是指信息系统受到破坏后,会对公民、法人和其他组织的合…

pip安装python包到指定python版本下

python -m pip install 包名1.命令行进入到指定python安装目录。比如我电脑上有python3.8也有python3.9。准备给python3.9安装指定的包

企业软件定制开发有哪些优势?|app小程序网站搭建

企业软件定制开发有哪些优势?|app小程序网站搭建 企业软件定制开发是一种根据企业特定需求开发定制化软件的服务。相比于购买现成的软件产品,企业软件定制开发具有许多优势。 首先,企业软件定制开发可以满足企业独特需求。每个企业都有自己独…

redis-cluster集群

1.redis-cluster集群 redis3.0引入的分布式存储方案 集群由多个node节点组成,redis数据分布在这些节点之中。 在集群之中分为主节点和从节点 集群模式当中,主从一一对应,数据写入和读取与主从模式一样,主负责写,从…

ui5使用echart

相关的代码已经发布到github上。 展示下相关的实现功能 1、柱状图-1 2、柱状图-2 3.折线图 4.饼状图 如何使用: 使用git clone项目到本地 git clone https://github.com/linhuang0405/com.joker.Zechart找到index.html。在vscode里右键选择Open with Live Serve…

数字化转型过程中面临最大的问题是什么?如何借助数字化工具实现快速转型?

在科技快速发展的时代,数字化转型已经成为企业的重要战略。当企业努力适应数字化时代并取得成功时,他们可能会面临各种必须有效应对的挑战。   数字化转型不仅仅是将新技术应用到企业的运营中,还需要对企业的运营方式、与客户的互动方式和价…

数据库数据恢复—SQLserver数据库中勒索病毒被加密的数据恢复案例

SQLserver数据库数据恢复环境&故障: 一台服务器上的SQLserver数据库被勒索病毒加密,无法正常使用。该服务器上部署有多个SQLserver数据库,其中有2个数据库及备份文件被加密,文件名被篡改,数据库无法使用。 SQL se…

智能优化算法 | Matlab实现金豺优化算法(GJO)(内含完整源码)

文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 智能优化算法 | Matlab实现金豺优化算法(GJO)(内含完整源码) 源码设计 %%clear clc close SearchAgents_no=30; % Number of search agents Max_iteration=1000

2023年03月 Scratch(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

Scratch等级考试(1~4级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 小猫的程序如图所示,积木块的颜色与球的颜色一致。点击绿旗执行程序后,下列说法正确的是?( ) A:小猫一直在左右移动,嘴里一直说着“抓到了”。 B:小猫会碰到球,然后停止。…

某资产管理机构: IAST提升安全水平,保障资产管理水平稳健增长

某资产管理机构是国内首批成立的资产管理公司之一,坚持“科技金融”、“数字金融”战略,以客户为中心,聚焦用户体验与业务协同,着力推进营销数字化进程和大数据平台建设,助力资产管理高质量发展。 数字科技推动工作效率…

PHP 正则式 全能匹配URL(UBB)

PHP 正则式 全能匹配URL(UBB) 语言:PHP 注明:正则式 无语言限制(js、PHP、JSP、ASP、VB、.net、C#...)一切皆可。 简介:PHP UBB 正则式 全能匹配URL 自动加超级链接。网上找了很多都不匹配或…

让国内AI模型解题:滑动窗口中找出最大值,文心一言,通义千问错误率100%,讯飞星火略胜一筹

最近,一些大厂陆续放出了自己的AI模型,处于日常的使用和准确度,我通过一道试题来看一下文心一言、讯飞星火和通义千万的回答结果 本道题是一道很经典的算法题,请在滑动窗口中找出最大值 文心一言 第一次给出答案 package main…

微服务实战系列之签名Sign

前言 昨日恰逢“小雪”节气,今日寒风如约而至。清晨的马路上,除了洋洋洒洒的落叶,就是熙熙攘攘的上班族。眼看着,暖冬愈明显了,叶子来不及泛黄就告别了树。变化总是在不经意中发生,容不得半刻糊涂。 上集博…

卫星信号监测可靠性提升10倍,移动性提升30倍!这家广播公司是这样做到的

来源:德思特测试测量 德思特案例 | 卫星信号监测可靠性提升10倍,移动性提升30倍!这家广播公司是这样做到的 欢迎关注虹科,为您提供最新资讯! 1 广播卫星频谱监测背景 频率的测量结果能够充分反映出节目播出的质量&am…