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

栈的压入、弹出序列

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

class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        int u=pushV.size();
        int ps_cur = 0;
        int v=popV.size();
        int pp_cur = 0;
        vector<int> tmp;
        int t_cur = -1;

        //最多运行次数是push的两倍,每次只能压入或者弹出,如果完全弹出成功需要2倍的次数。循环结束后如果辅助栈不是栈底-1就说明弹出失败。
        for(int i=0;i<2*u;i++){
            if(t_cur == -1 || tmp[t_cur]!=popV[pp_cur]){
                if(ps_cur<u){//控制边界条件,如果超过就不继续压栈,浪费循环次数
                    t_cur++;
                    tmp.push_back(pushV[ps_cur]);
                    ps_cur++;//最后一次超过边界,就不会继续执行此块
                }
            }else if(tmp[t_cur]==popV[pp_cur]){
                tmp.pop_back();
                t_cur--;
                pp_cur++;
            }
        }
        if(t_cur==-1){
            return true;
        }
        
        return false;
    }
};

全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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