输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。
例如:
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;}