已知入栈顺序求合法的出栈顺序

class Solution {
public:
    //已知入栈的顺序求合法的出栈的顺序
    bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {
        //可以先创建一个栈
        stack<int>stack1;
        int j=0;
        //将第一个序列的元素压入栈中
        //每压一个元素入栈,就判断一下如果栈非空且等于第二个序列对应的元素,就出栈,j++
        for(int i=0;i<pushV.size();i++){
            stack1.push(pushV[i]);
            while(!stack1.empty()&&stack1.top()==popV[j]){
              j++;
              stack1.pop();
            }
        }
        //最后如果第二个序列的所有的元素都有对应的出栈顺序与之匹配,就表示第二个序列是合法的出栈顺序
        if(j==popV.size()){
            return true;
        }
        return false;
    }
};