题目:
思路:栈
- 循环,入栈序列全部入栈结束
- 入栈序列进栈,下标++
- 循环,栈不为空的情况下,栈顶元素与出栈序列比较,相等,下标++,并且栈pop;否则不进入循环
- 最后出栈序列的下标等于出栈序列的个数,说明全部匹配,返回true;否则返回false
代码:
bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {
stack<int> st;
int i = 0, j = 0;
while(i < pushV.size())
{
st.push(pushV[i++]);
while(!st.empty() && st.top() == popV[j])
{
st.pop();
j++;
}
}
if(j == popV.size()) return true;
else return false;
}