题解 | #栈的压入、弹出序列#
栈的压入、弹出序列
http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106
栈的压入和弹出
[思路]:用一个栈模拟入栈过程,分情况。(i表示pushv,j表示popv)
当popv[j] != pushv[i],即当前数入栈v。继续判断下一个
当pushv[i] == popv[j],当前入栈立即出栈,此时两种情况(1.前面入栈的出栈)(2.继续入栈)
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
stack<int> v;
int n = pushV.size();
int i = 0,j = 0;
while(i < n && j < n){
if(pushV[i] != popV[j])
v.push(pushV[i++]);
else{
++i,++j;
while(!v.empty() && v.top() == popV[j]){
v.pop();
++j;
}
}
}
if(v.empty())return true;
return false;
}
};