题目描述
模拟栈的进入和弹出
双指针i,j分别指向入栈序列和弹出序列
先压入第一个元素,每次循环判断栈顶元素是否等弹出序列的第j个
相等 : 弹出 ,弹出序列向前走,
不相等: 入栈序列向前走,入栈。
最后判断栈是否为空得到结果
C++ 代码
class Solution {
public:
bool isPopOrder(vector<int> pushV,vector<int> popV) {
if(pushV.size() != popV.size()) return false;
if(pushV.empty() && popV.empty()) return true;
stack<int> st;
int i = 0,j = 0;
st.push(pushV[i]);
while(i < pushV.size() && j < popV.size()){
if(st.size() && st.top() == popV[j]){
j++;
st.pop();
}
else
st.push(pushV[++i]);
}
if(st.size()) return false;
return true;
}
};