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

栈的压入、弹出序列

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

   /* 本题目给定一个入栈序列和一个出栈序列,考察元素出栈顺序的合法性。定义一个i与j分别遍历pushV与popV,逐一判断出栈序列popV[j]是否等于栈顶元素(为了方便操作,栈顶元素初始化为一个超题干范围的数),否则pushV[i++]入栈,再重复上述判断,当判断成功时,j++,popV.pop(),并重复上述操作。当popV[j]无法匹配sta.top()且i==n时,退出循环体。最终判断j==n?,若是说明出栈队列合法,否则不合法。*/
class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        //  根据后进先出的特点,应该先考虑popV[j]是否等于栈顶元素
        stack<int>sta;
        int n =pushV.size();
        sta.push(-1001);
        int i =0,j=0;
        while(true){
            //  当i没有读取到push的末尾且栈非空时,执行循环体
            if(popV[j]==sta.top()){
                j++;
                sta.pop();
            }else if(i!=n){
                //  依旧可以读取
                sta.push(pushV[i++]);
            }else{
                break;
            }
        }
        if(j==n){
            return true;
        }else{
            return false;
        }
    }
};

全部评论

相关推荐

昨天 08:15
已编辑
门头沟学院 Java
美团 Java后端开发 10w刀 美硕
YamadaAnna:包留美的,你拿的美团 招银,没一个不加班的。考虑一下未来吧,应届生的工资真不重要,10w刀税后6w,省省还是能活下去的。回国了35岁怎么办,难道35岁还能返美么,就算35岁还能在国内找到工作,难道打算一辈子9点10点下班么。你有能力在美利坚找到工作,回国如果不是哪个965大厂给你发个ssp,真不值得。 等抽不中h1b,没办法了再回国吧。
点赞 评论 收藏
分享
ArisRobert:统一解释一下,第4点的意思是,公司按需通知员工,没被通知到的员工是没法去上班的,所以只要没被通知到,就自动离职。就是一种比较抽象的裁员。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务