22栈的压入,弹出序列

原创 2015年07月08日 21:17:30



bool IsPopOrder(const int* pPush, const int* pPop, int nLength)
{
bool bPossible = false;
if (pPush != NULL&&pPop != NULL&&nLength > 0)
{
const int* pNextPush = pPush;
const int* pNextPop = pPop;
std::stack<int> stackData;
while (pNextPop - pPop < nLength)
{
while (stackData.empty() || stackData.top() != *pNextPop)
{
if (pNextPush - pPush == nLength)
break;//判断是否第一个序列全都压入栈
stackData.push(*pNextPush);
pNextPush++;
}
if (stackData.top() != *pNextPop)
break;
stackData.pop();
pNextPop++;
}
if (stackData.empty() && pNextPop - pPop == nLength)//第二个序列中还有元素
bPossible = true;
}
return bPossible;
}

相关文章推荐

【剑指Offer学习】【面试题22:栈的压入、弹出序列】

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。 解题思路:解决这个问题很直观的想法就是建立一个辅助栈,把输入的第一个序列中的数...

剑指offer 面试题22 栈的压入、弹出序列

剑指offer 面试题22 栈的压入、弹出序列 题目: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。 假设压入栈的所有数字均不相等。 ...

剑指offer代码解析——面试题22栈的压入、弹出序列

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为栈的弹出顺序。 栈的特点是不管入栈还是出栈,都只能对栈顶元素进行操作。一个序列如果依次入栈,再依次出栈的话,序列将...

剑指Offer-面试题22:栈的压入、弹出序列

题面:《剑指Offer》P134 / 牛客网 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入...

剑指offer 面试题22:栈的压入、弹出序列 题解

剑指offer 面试题22:栈的压入、弹出序列 提交网址: http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpI...

剑指Offer22:栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一...

剑指offer-4-面试题22:栈的压入、弹出序列

题目 分析 测试用例代码 本题考点 题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1、2、3、4、5 是某...

剑指Offer:面试题22 栈的压入、弹出序列

/* 栈的压入、弹出序列: 关键: 设定一个辅助栈。辅助栈中存放的就是弹出序列,数据栈中: 按照压栈序列,逐个压入元素,当辅助栈的栈顶元素与数据栈的栈顶元素相等时,两者同时弹出栈顶。 然后再比...

剑指offer之面试题22:栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列...

剑指offer_面试题22_栈的压入、弹出序列(总结规律)

题目:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列:1、2、3、4、5 是某栈的压栈序列,序列4、5、3、2、1是该压栈序...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:22栈的压入,弹出序列
举报原因:
原因补充:

(最多只允许输入30个字)