比如入栈序列是 1 2 3
判断一个序列是否为正确的出栈序列
132 321 312,其中312是不正确的,
下面是代码:
bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {
stack<int> s;
int index=0;
for(int i=0;i<pushed.size();++i)
{
s.push(pushed[i]);
while(!s.empty() && popped[index]==s.top())
{
s.pop();
index++;
}
}
return s.empty();
}
最后根据栈是否为空判断是否为是否是正确序列,比如序列312,s一直入栈,直至3入栈,此时3出栈,index++;但是没有元素与栈顶相等,循环结束,栈非空,return false;