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

栈的压入、弹出序列

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;

    }

};

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-24 13:32
点赞 评论 收藏
分享
07-22 11:35
门头沟学院 Java
谁知道这是为什么吗,有没有懂的佬给讲讲
理智的小饼干又熬夜了:鹅打电话问我参不参加后台提前批,说是有的但还没放官网
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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