遍历压栈序列,压入初始为空的栈stk中。在此过程中,每压入一个元素时
- 判断stk栈顶元素是否和出栈序列首元素相等
- 如果相等,删除栈顶元素,同时删除出栈序列首元素(实际实现时不用删除,用下标++访问即可)
循环这两步操作,直到不满足相等条件。
遍历完压栈序列时,stk为空,说明满足。
class Solution {
public:
bool IsPopOrder(vector<int> pushV,vector<int> popV) {
if (pushV.size() == 0)
{
return false;
}
stack<int> st;
for (int i = 0, j = 0; i < pushV.size(); ++i)
{
st.push(pushV[i]);
while (!st.empty() && st.top() == popV[j] && j < popV.size())
{
st.pop();
j++;
}
}
return st.empty();
}
};