输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。
例如:
input:
1 2 3 4 5
4 5 3 2 1
output:
true
input:
1 2 3 4 5
4 3 5 1 2
output:
false
代码如下:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
stack<int> s1;
int size1=pushV.size();
int size2=popV.size();
int i1,i2;
i1=0;
i2=0;
while(i2<size2){
while(s1.empty()||s1.top()!=popV[i2]){
if(i1>=size1)
break;
s1.push(pushV[i1]);
i1++;
}
if(s1.top()!=popV[i2])
break;
s1.pop();
i2++;
}
if(s1.empty()&&i2>=size2)
return true;
else
return false;}
这篇博客探讨了如何判断给定的两个整数序列,其中一个表示栈的压入顺序,另一个是否代表对应的弹出顺序。通过示例和代码解释了如何进行这种判断,并提供了相关算法实现。
243

被折叠的 条评论
为什么被折叠?



