此题为检查栈的压入序列和弹出序列是否匹配
思路:构造辅助栈,由于压入栈的数字均不相等,可将压入栈的序列逐个压入辅助栈,如果栈顶和弹出栈的元素相等,则弹出栈顶元素,并将记录当前所比较的弹出栈的位置向后移动。
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
int pushlen=pushV.size();
int poplen=popV.size();
if(pushlen!=poplen)
return false;
stack<int > s;
int index=0;
for(int i=0;i<=pushlen;i++)
{
if(!s.empty())
{
while(!s.empty()&&s.top()==popV[index])
{
s.pop();
index++;
}
}
if(i<pushlen)
s.push(pushV[i]);
}
if(s.empty()&&index==poplen)
return true;
return false;
}
};