判断栈的压入、弹出序列

来源:互联网 发布:dior fix it colour 编辑:程序博客网 时间:2024/06/05 18:46

借助一个vector数组s


push_back  1,2,3,4,5
pop _back    4,5,3,2,1
首先1入辅助数组,此时s.back()  1≠4    2进
此时s.back()  2≠4,3进
此时s.back()  3≠4,4进
此时s.back()  4=4,4出,弹出序列向后一位,此时为5,,s里面是1,2,3
此时s.back()  3≠5,5进
此时栈顶5=5,5出 ,弹出序列向后一位,此时为3,,s里面是1,2,3

    bool IsPopOrder(vector<int> pushV,vector<int> popV) {                if(pushV.size()==0||pushV.size()!=popV.size())            return false;        vector<int> s;        int i = 0,j = 0 ;        while(i < pushV.size()){            s.push_back(pushV[i++]);            while(j < popV.size() && s.back() == popV[j]){                s.pop_back();                j++;            }              }        return s.empty();    }