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

栈的压入、弹出序列

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

class Solution {
  public:
    bool IsPopOrder(vector<int> pushV, vector<int> popV) {
        int i, j;
        stack<int> s;
        i = j = 0;  // i 代表压入数列,压入栈中的个数,以及压入数列的下标数; j 代表压出数列的下表数及个数; 
        bool ans = true;
        if(pushV.size()==0 || popV.size()==0) return false;
        while (i<pushV.size()&&j<popV.size()) {
            if (pushV[i] ==  popV[j]) {  //判断压入数列的第 i 个数和压出数列的第 j 个数是否相等; 
                i++;
                j++;
            } else if (!s.empty() && s.top() == popV[j]) {   //在模拟栈不为空的情况下,判断栈顶元素与压出数列的第就 j 个元素是否相等 
                j += 1;
                s.pop();
            } else if (i < pushV.size()) { //在模拟栈中压入的总次数少于 压入数列长度的情况下, 
                s.push(pushV[i]);
                i++;
            } else {  //如果前面的条件都不满足,说明此时压入的数 i 已经超出了压入数列的长度限制; 
                ans = false;
                break;
            }
        }
        return ans;
    }
};

全部评论

相关推荐

2025-12-15 11:27
门头沟学院 Java
哇哇的菜鸡oc:所有人不要理会,就好了,后面他就知道怎么回事了,只能说有的时候市场都是被宰的人搞坏的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-12-20 18:14
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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