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

数据结构-3.7.双端队列

一.双端队列的三种形式:

双端队列也可以是只在一端删除和添加,此时就是栈;

双端队列在一端添加,另一端输出,此时就是队列;


二.判断输出序列合法性:

题目:若数据元素输入序列为1,2,3,4,则哪些输出序列是合法的,哪些是非法的?

共有24种排列方式:

1.双端队列只在一端删除和添加:此时双端队列也是栈

2,4,1,3不行,因为4出栈时说明3已经入栈了,下一个出栈的只能是3,而不是1。

下图红色标注的输出序列都不合法:

栈中合法的序列,双端队列中也一定合法。

2.双端队列只能一端插入,两端删除:

如果此时双端队列变为只能一端插入,两端删除时,栈中合法的序列在该双端队列中也一定合法,因此只需再验证栈中

不合法的序列就可以得知哪些序列在该双端队列合法:

比如4,3,2,1就不合法,因为4出去后,说明1,2,3已经进入,下一个出栈的要么是1(左边出),要么是3(右边出),

不可能是2出栈。

下图红色标注的输出序列都不合法:

3.双端队列只能一端删除,两端插入:

如果此时双端队列变为只能一端删除,两端插入时,栈中合法的序列在该双端队列中也一定合法,因此只需再验证栈中

不合法的序列就可以得知哪些序列在该双端队列合法:

比如出栈序列1,4,2,3,1先从左或者右进入再出去,4出栈时说明2,3已经进栈,逆推:如果出栈顺序是4,2,3,说明栈里的排列是3,2,4(注:出栈只能从一端出),进栈可以2先从左或者右进入,再3从左进栈,就形成3,2,最后4从右进栈,就形成了3,2,4,说明该出栈序列合法。

比如出栈序列4,1,3,2,逆推:由于出栈只能从一端出,因此栈里排列只能是2,3,1,4,显然错误,因为如果形成了1,4,那么左边必须是3,2,不可能是2,3,因为3比2后进栈(另一种思路:4出栈后,如果前面是1,那么1的前面只可能是2,不可能是3,因为3比2后进栈)

下图红色标注的输出序列都不合法:


三.总结:



http://www.kler.cn/news/328906.html

相关文章:

  • 栈(模板)、队列(模板)(9.27)
  • 5分钟精通Excel在go中的使用
  • 7--苍穹外卖-SpringBoot项目中套餐管理 详解(一)
  • QT中的按钮控件和comboBox控件和spinBox控件无法点击的bug
  • 发布-订阅模式演示示例
  • 神点SAAS云财务系统/多账套/前后端全开源
  • 【PostgreSQL】入门篇——索引:提高查询性能的利器
  • 【英特尔IA-32架构软件开发者开发手册第3卷:系统编程指南】2001年版翻译,1-1
  • 论React Native 和 UniApp 的区别
  • 【CTF Web】Pikachu 反射型xss(get) Writeup(反射型XSS+GET请求)
  • 代码随想录Day 59|图论Part09,dijkstra(堆优化版)精讲、Bellman_ford算法精讲
  • 继承实现单例模式的探索(一)
  • 已解决:“ModuleNotFoundError:No module named apex”
  • Vue3+Antv X6流程图基本使用
  • 蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键
  • 智能工厂的设计软件 三部曲-表征模式mode(大纲图轮廓图和草图)之1 “草图”--基类基元:“概念对子Pair
  • [leetcode]300_最长递增子序列
  • HTTP Status 404 - /brand-demo/selectAllServlet错误解决原因-Servlet/JavaWeb/IDEA
  • Spring异常处理-@ExceptionHandler-@ControllerAdvice-全局异常处理
  • ue4多个面重叠闪烁
  • ubuntu18.04 Anconda安装及使用
  • 【网络安全】-访问控制-burp(1~6)
  • 在idea使用nacos微服务
  • LeetCode[中等] 45. 跳跃游戏 II
  • 排序算法的理解
  • 【ChatGPT】Python 实现计算两线段的变换矩阵
  • 解决Windows远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多,请稍后片刻再重试,或与系统管理员或技术支持联系“问题
  • 师生健康监测系统:SpringBoot技术实践
  • Master PDF Editor 下载及详细安装教程
  • Codeforces Round 976 (Div. 2 ABCDE题)视频讲解