数据结构经典问题——出栈顺序 转载至:canlynet微博
对于数据结构的问题,如果思路稍有不对,就容易陷入逻辑混乱。我希望自己对数据结构的理解,能够给大家一点帮助。我会将所有我有过心得的问题在我的博客上写出来,欢迎大家浏览,如果有什么不对的地方,还请大家指正,有问题可以给我留言,我会尽量解决,谢谢。
声明一下我写博客的初衷:不是炫耀,而是回报。因为我在计算机方面的知识好多都从网上找到答案,因此我也
将自己搜寻整理的材料,自己写的材料,展示到网上,算是尽一份力吧。
一个经典问题如下(不愿意看思路的可以直接看红色字体部分):
一个栈的入栈序列是a,b,c,d,e则栈的不可能的输出序列是:()
A edcbd B decba C dceab D abcde
栈之根本——先进后出(first in,lastout)初次接触到这个问题的人,或许会认为入栈abcde,所以出栈只能是edcba所以BCD都不对。
其实是这个问题描述有歧义,应该是分段入栈的顺序,也就是说,可能先入栈a,取出a,入栈b,取出b……,所以D也是可能的。
知道这个意思了以后,就要明确这个问题的矛盾根本所在:第一次出栈d,说明什么?说明a,b,c一定早已入栈(入栈顺序决定的)。那么在出栈d以后,a,b,c的出栈顺序一定是c,b,a,而不用理会中间穿插着出栈了d后面的字符(因为可以再入栈,再出栈嘛)。所以立即选中C,不用犹豫,理由简单:d出栈了,abc一定已经入栈,那么abc只能以cba的顺序出栈,C不符合,OK!This problem is so esay, Thanks for my teacher Wang Shanshan.
数据结构中的思路一定要单一,要简明,抓住问题根本,万不可考虑过多,试探法只有在不知道解题思路的情况下去尝试,尝试多了,你会发现,逻辑容易混乱,俗称“我晕”!
转载于:https://www.cnblogs.com/jianheng/p/4102643.html
数据结构经典问题——出栈顺序 转载至:canlynet微博相关推荐
- 出栈顺序 与 卡特兰数(Catalan)的关系
一,问题描述 给定一个以字符串形式表示的入栈序列,请求出一共有多少种可能的出栈顺序?如何输出所有可能的出栈序列? 比如入栈序列为:1 2 3 ,则出栈序列一共有五种,分别如下:1 2 3.1 3 2 ...
- 数据结构之出栈顺序题(秒杀技巧)
1.先导知识:栈是什么? 栈的定义:栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈 ...
- 数据结构----依据出栈顺序判断所需的最少栈空间
1 问题描述 问题: 若元素 a,b,c,d,e,f,g 顺序进栈,且出栈顺序是 b,d,c,f,e,a,g 则栈的容量至少是_____ 答案:3 2 解法描述与分析 2.1 解法描述 记 1,2,3 ...
- 数据结构----出栈顺序有效性的判断
1 问题描述 问题1:若元素 a,b,c,d,e,f 顺序进栈, 则不准许的出栈顺序是 A. d,c,e,b,f,a B. c,b,d,a,e,f C. b,c,a,e,f,d D. ...
- 判断出栈顺序的合法性(面试题)
判断出栈顺序的合法性 "栈"是一种限制性线性表,是将线性表的插入.删除操作限制为仅在表的一端进行,一般将能够插入.删除的一端称为栈顶,表的另一端称为栈底.当栈中没有元素时称为空栈. ...
- (24) 不可能的出栈顺序
一.问题描述 给定两个数组,一个进栈顺序,一个出栈顺序.判定出栈数组的出栈顺序是不是有可能的. 二.Code 1 package algorithm; 2 3 import java.util.Arr ...
- 判断栈的出栈顺序是否正确
一 问题描述: 两个数组pPush和pPop分别存储了压栈序列和出栈序列,如何判断出栈序列是否正确,假设元素不重复. 需要实现的函数: bool isStackOutRight(i ...
- 蓝桥杯 出栈顺序问题引发的思考以及递归的优化(缓存池)
蓝桥杯 出栈顺序问题引发的思考以及递归的优化(缓存池) 关于递归的优化和思考 在我们IT圈内有句话,普通程序员用迭代,天才程序员用递归.诚然,递归确实能够将许多复杂的问题简化,但是问题来了,由于递归采 ...
- 【PAT甲】1051 Pop Sequence (25分)判断出栈顺序的合法性
problem 1051 Pop Sequence (25分) Given a stack which can keep M numbers at most. Push N numbers in th ...
- 出栈顺序(栈和队列)B
<center><h2>问题 B: 出栈顺序(栈和队列)</h2><span class="green">时间限制: </sp ...
最新文章
- Eclipse中看java源代码
- 测试php是否连接mysql_如何测试php是否连接mysql成功
- 字符指针与字符串变量的转换
- http协议报文格式原理图
- 自己动手打造属于自己的智能家居(二)
- Opencv2.X以上Mat类型与IplImage*的转换
- easyui添加删除表格任意行
- 双目立体匹配算法:ELAS
- Linux下复制粘贴快捷键
- 证件照修改宽高和体积的工具
- PDF怎么编辑修改文字?
- Redis入门(2):五大数据类型(key,string,list,set,sortset)将其实战,配置文件详解,发布与订阅
- 闲聊Robots协议
- 全新一代主播带货直播全套设备详细介绍
- 电脑系统还原节点怎么创建
- Windows/Linux获取Mac地址和CPU序列号实现
- 无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 1870(aptd)持有 的解决问题
- 华三H3C交换机配置端口聚合之二层端口静态和动态聚合
- Netron展示pytorch模型结构
- 基于微信小程序旅游管理系统