18、栈的压入、弹出序列
2018-03-28 09:05
309 查看
题目:
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数组均不相等,例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是对应的一个弹出顺序。但是4,3,5,1,2就不是弹出顺序。说明:第一次见这个题目,有点没懂说明意思。在这里说明一下。
出栈是指在压入任意一个数字的时候都可以进行出栈操作,并且出栈的数组数量也可以为任意个。
例如:题目中的弹入弹出序列对应的过程为:在依次弹入1,2,3,4后,先弹出4,在弹入5,接着依次弹出其他元素5,3,2,1,
所以,最终的入栈顺序为1,2,3,4,5,。出栈顺序为4,5,3,2,1
解法:
利用辅助栈来模拟题目描述的过程,若按照题目给的压入和压出顺序 对辅助栈进行操作,辅助栈在最后应该为空。若不是对应的压出序列,则辅助栈不为空。(代码不长,不懂的可以用案例 手动 或者调试 程序的全过程)
代码如下: bool IsPopOrder(vector<int> pushV,vector<int> popV) {
if(pushV.empty()||pushV.size()==0||popV.empty()||popV.size()==0||pushV.size()!=popV.size())
return false;
int index=0; //记录出栈的个数,每出一个就++一次
stack<int> stack;
for(int i =0;i<pushV.size();i++)
{
stack.push(pushV[i]);
while(!stack.empty() && stack.top()==popV[index])
{
index++;
stack.pop();
}
}
return stack.empty();
}
相关文章推荐
- 剑指offer(18)-栈的压入、弹出序列
- 剑指offer--栈的压入、弹出序列
- 栈的压入、弹出序列
- 栈的压入弹出序列
- 剑指offer-面试题22.栈的压入,弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- 剑指offer:栈的压入、弹出序列(java)
- 栈的压入、弹出序列
- 栈的压入、弹出序列——22
- 栈的压入、弹出序列
- 栈的压入、弹出序列
- 剑指offer题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。
- 九度OJ 1366 栈的压入、弹出序列 【数据结构】
- 剑指offer面试题22:栈的压入、弹出序列
- (牛客网)栈的压入、弹出序列
- 面试题:栈的压入、弹出序列
- 栈的压入、弹出序列
- (十四)剑指offer之栈的压入弹出序列及包含min函数的栈