• 压入、弹出序列为空,或者大小不一致,返回false;
  • 定义栈,依次放入压入序列,如果栈不为空,且栈顶元素等于弹出序列元素,弹出栈顶元素,对比下一弹出序列元素;
  • 最后栈为空,返回true,否则返回false。
class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        if (pushV.empty() || popV.empty() || pushV.size() != popV.size()) {
            return false;
        }
        stack<int> st;
        int j = 0;
        for (int i = 0; i < pushV.size(); i++) {
            st.push(pushV[i]);
            while (!st.empty() && st.top() == popV[j]) {
                st.pop();
                j++;
            }
        }
        return st.empty();
    }
};