题解 | #栈的压入、弹出序列#

栈的压入、弹出序列

https://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106

class Solution {

public:

    bool IsPopOrder(vector<intpushV,vector<intpopV) {

        int i=0,j=0,flag=1;  //没有借助辅助栈  flag用来判断输出结果

        while(1){          //i作为pushV的下标,j作为popV的下标

            if(popV[j]!=pushV[i]){         //只要没到达出栈的第一个元素,i就增加,表示指向当前栈顶元素

                i++;

                while(pushV[i]==10000&&i<pushV.size()) i++;

                if(i==pushV.size()){      

                    break;

                }

            }

            if(popV[j]==pushV[i]){    //碰到出栈的元素,就置pushV种对应为10000表示已出栈

                pushV[i]=10000;

                j++;

                while(pushV[i]==10000&&i>0) i--;      //退回到当前栈顶元素开始判断

            }

        }

        for(int k=0;k<pushV.size();k++){

            if(pushV[k]!=10000) flag=0;

        }

        if(flag==0return false;

        else return true;

    }

};

全部评论

相关推荐

06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务