关于我:
个人专栏: 《优选算法》《C语言》《CPP》 生活的理想,就是为了理想的生活! 作者留言
PDF版免费提供 :倘若有需要,想拿我写的博客进行学习和交流,可以私信我将免费提供PDF版。
留下你的建议 :倘若你发现本文中的内容和配图有任何错误或改进建议,请直接评论或者私信。
倡导提问与交流 :关于本文任何不明之处,请及时评论和私信,看到即回复。
参考目录
1.前言
我们知道对于同一入栈的队列,在出栈时候也会因为出栈的时机不同从而造成不同的出栈顺序,那该如何判断一串出栈队列属于该入栈队列的某一出栈顺序呢???
下面我们来介绍题目------栈的压入和弹出序列。
所以说,对于同一入栈序列,不同的出栈时间也会影响出栈结果。
2.题目简介
题目链接:LINK
题意很简单,给我们一组入栈和出栈序列,检验是否匹配。
3.题解思路
思路很简单,我们模拟入栈出栈次序,看是否匹配。
- 先把入栈序列入栈
- 栈顶元素和出栈序列是否匹配
- 匹配,持续出数据,直到不匹配或者栈为空
- 不匹配,继续第一步...
当入栈序列走完了,我们就可以判断结果了。
- 如果栈不为空,则不匹配。
- 如果栈为空,则匹配。
4.参考代码
cpp
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pushV int整型vector
* @param popV int整型vector
* @return bool布尔型
*/
bool IsPopOrder(vector<int>& pushV, vector<int>& popV)
{
// write code here
int pushi = 0;
int popi = 0;
stack<int> st;
while(pushi != pushV.size())
{
//数据入栈
st.push(pushV[pushi]);
//判断是否匹配,出栈(栈必须非空才可以top)
while(!st.empty() && st.top() == popV[popi])
{
//匹配,我们就出栈,popi++
st.pop();
popi++;
}
pushi++;
}
//如果st为空,则证明匹配,如果不为空,则证明不匹配。
return st.empty();
}
};
好的,如果本篇文章对你有帮助,不妨点个赞~谢谢。