【面试题】剑指offer22-判断一个序列是否是某一个栈的序列
来源:互联网 发布:电视机32寸淘宝网 编辑:程序博客网 时间:2024/05/21 17:47
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出序列。
假设压入站的所有数字均不相等。
例如序列1,2,3,4,5是某站的压栈序列,序列4,5,3,2,1是该压栈序对应的一个弹出序列,但是4,3,5,2,1
就不是该压栈序列的弹出序列。
解决这个问题,我们需要一个辅助栈,把输入第一个序列的数字依次压入该辅助栈,并按照第二个序列
的顺序依次从该栈中弹出数字。
代码的实现:
#include<iostream>using namespace std;#include<assert.h>#include<stack>bool IsPopOrder(const int* pPush, const int* pPop, size_t length){assert(length);assert(pPush && pPop);bool possible = false;const int* NextPush = pPush;const int* NextPop = pPop;stack<int> s;while (NextPop - pPop < length){while (s.empty() || s.top() != *NextPop){if (NextPush - pPop == length){break;}s.push(*NextPush);NextPush++;}if (s.top() != *NextPop){break;}s.pop();NextPop++;}if (s.empty() && NextPop - pPop == length){possible = true;}return possible;}
阅读全文
0 0
- 【面试题】剑指offer22-判断一个序列是否是某一个栈的序列
- 【面试题】判断一个序列是不是栈的输出序列
- 【面试题】判断一个序列是不是栈的输出序列
- 判断一个序列是否是栈的弹出序列
- 判断一个序列是否是栈的合法序列
- 【面试题】剑指offer24--判断一个序列是否为二叉树的后序遍历
- java判断一个序列是否可能是另外一个压栈序列的弹出序列
- 22-判断一个序列是否是另一个序列入栈的弹出序列
- 判断一个序列是否是该栈的弹出顺序
- 基于visual Studio2013解决面试题之0409判断一个栈是否另外一个栈的弹出序列
- 面试题21:包含min函数的栈,面试题22:判断某一序列是否是出栈序列
- 剑指Offer22栈的压入、弹出序列
- 剑指offer22--栈的压入弹出序列
- 剑指offer22:栈的压入、弹出序列
- 剑指Offer22:栈的压入、弹出序列
- 剑指offer22:栈的压入、弹出序列
- 判断一个序列是否是另外一个序列的子序列的算法
- 剑指offer面试题24判断一个序列是否为BST的后序遍历序列附加输入递归的创建二叉树
- 抓取那点事
- vue实现tab切换外加样式切换
- linux 定时器
- 变量和属性
- COCOS设置节点优先级
- 【面试题】剑指offer22-判断一个序列是否是某一个栈的序列
- 一个不错的技术文章网站
- java多种布局管理器混合使用
- TableView中注意问题:
- Swift3.0相对于2.3语法的一些变化
- mysql配置安装未响应方法
- I/O多路转接----select
- centos 下安装python2.7.x
- jstack: Java占用高CPU分析之- C2 Compiler Thread