判断一个序列是否为另一个栈的出栈序列(栈的压入、弹出序列)
来源:互联网 发布:mac 定时关闭程序 编辑:程序博客网 时间:2024/05/16 10:33
判断一个序列是否为另一个栈的出栈序列
【思路】借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元素是不是出栈顺序的
第一个元素,这里是4,很显然1≠4,所以我们继续压栈,直到相等以后开始出栈,出栈一个元素,则将出栈顺序向
后移动一位,直到不相等,这样循环等压栈顺序遍历完成,如果辅助栈还不为空说明弹出序列不是该栈的弹出顺序。
入栈1,2,3,4,5
出栈4,5,3,2,1
首先1入辅助栈,此时栈顶1≠4,继续入栈2
此时栈顶2≠4,继续入栈3
此时栈顶3≠4,继续入栈4
此时栈顶4=4,出栈4,弹出序列向后一位,此时为5,,辅助栈里面是1,2,3
此时栈顶3≠5,继续入栈5
此时栈顶5=5,出栈5,弹出序列向后一位,此时为3,,辅助栈里面是1,2,3
以下是实现代码:
bool Ispopsort(vector<int> Push, vector<int> Pop){size_t size1 = Push.size();size_t size2 = Pop.size();if (size1 == 0 || size2 == 0)return false;vector<int> cur;for (size_t i = 0, j = 0; i < size1; i++){cur.push_back(Push[i]);while (j < size2&&Pop[j] == cur.back()){cur.pop_back();j++;}}return cur.empty();}
0 0
- 判断一个序列是否为另一个栈的出栈序列(栈的压入、弹出序列)
- 22-判断一个序列是否是另一个序列入栈的弹出序列
- 如何判断一个序列是否为另一个序列的出栈序列
- 判断一个栈的弹出序列是否为合法序列
- 判断某序列是否为另一个序列的出栈序列 C++实现
- 栈的压入、弹出序列(判断弹出序列是否正确)
- 给出一个入栈序列和一个出栈序列,判断出栈序列是否是入栈序列对应的出栈序列
- 边看边写(判断一个序列是否为出栈序列)
- 判断栈的压入,弹出序列是否匹配
- 判断序列是否为正确的出栈序列
- 判断栈的压入、弹出序列
- 栈的弹出序列是否与压入序列匹配?
- 判断给定序列是否是对应入栈序列的出栈序列(C++)
- 判断一个序列是否是栈的弹出序列
- java判断一个序列是否可能是另外一个压栈序列的弹出序列
- 根据栈的压入序列判断弹出序列是否正确(模板实现)
- 《剑指offer》:[22]如何判断一个序列是否为栈的弹出序列
- 判断一个序列是否为栈的输出序列
- AutoCompleteTextView和MultiAutoCompleteTextView
- system.sys 与 system.err 打印的区别异同
- 各种细的知识点(一)
- 手机端QQ登录openid与网站端QQ登录openid不一样
- CentOS7修改yum阿里源
- 判断一个序列是否为另一个栈的出栈序列(栈的压入、弹出序列)
- Ubuntu 14.04安装TeamViewer
- 安卓笔记之ViewPager页卡
- 欢迎使用CSDN-markdown编辑器
- Loaders 全面详解及源码浅析
- HTML5 自定义data标签
- poj3020Antenna Placement
- CAD开发小结1
- python:print含有中文的list