剑指offer第二十一题【栈的压入、弹出序列】c++实现
来源:互联网 发布:淘宝改差评技巧 编辑:程序博客网 时间:2024/05/20 17:39
栈的压入、弹出序列
- 参与人数:1958时间限制:1秒空间限制:32768K
- 通过比例:22.25%
- 最佳记录:0 ms|8552K(来自 geeek)
题目描述
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。
弹出序列的顺序需要满足,如果一个数字弹出,那么到下一个比这个数之后入栈的数字之间的序列,必须是后入栈的先出栈。
题目出栈4 3 5 1 2
5后面的序列1 2 因为1被压在栈底,必须后入栈的先出栈,所以只能以5 2 1的顺序出栈。
bool IsPopOrder(vector<int> pushV,vector<int> popV) { if(pushV.empty()){ return false; } map<int,int> Hash; //用map做一个映射,入栈顺序的值不一定是递增 for(int i=0;i<pushV.size();i++){ Hash[pushV[i]]=i+1; } int now=Hash[popV[0]];//当前最靠后入栈的键值,例如题目给的4 3 5 1 2,now先等于4,再等于5 for(int i=0;i<popV.size();i++){ //如果入栈序列中没有这个值 if(Hash[popV[i]]==0){ return false; } if(Hash[popV[i]]>=now){ now=Hash[popV[i]]; }else if(Hash[popV[i]]<=Hash[popV[i-1]]){ continue ; }else{ return false; } } return true;}
0 0
- 剑指offer第二十一题【栈的压入、弹出序列】c++实现
- 剑指Offer: (Java实现) 栈的压入、弹出序列
- 【剑指offer】题22:栈的压入、弹出序列
- 剑指offer刷题之java实现的栈的压入、弹出序列
- offer,栈的压入、弹出序列
- 【剑指offer】栈的压入弹出序列
- 剑指offer系列源码-栈的压入、弹出序列
- 剑指offer--栈的压入、弹出序列
- 剑指Offer之 - 栈的压入、弹出序列
- 剑指offer:栈的压入、弹出序列
- 《剑指offer》栈的压入、弹出序列
- 剑指Offer系列---(24)栈的压入、弹出序列
- 栈的压入、弹出序列(剑指offer)
- 剑指 offer:栈的压入、弹出序列
- 【剑指Offer】栈的压入、弹出序列
- 剑指offer—栈的压入、弹出序列
- 剑指offer:栈的压入弹出序列
- 剑指Offer-22-栈的压入、弹出序列
- GT and sequence 5504GT and sequence
- Git分支管理策略
- 使用STM32F103采集天地飞遥控的信号
- 九度OJ 1037:Powerful Calculator(强大的计算器) (大整数运算)
- 三、RemoteViews
- 剑指offer第二十一题【栈的压入、弹出序列】c++实现
- BZOJ1037 生日聚会
- Jquery iframe获取父窗口中的元素
- 1769493476
- RHadoop 例子WordCount测试
- cadence设置丝印字体大小
- NYOJ——64 鸡兔同笼
- HTML学习笔记之表格的使用
- HDU 5504 GT and sequence(给一堆数,求最大值,坑比较多)