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

栈的压入、弹出序列

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

class Solution {
public:
    bool IsPopOrder(vector<int>& pushV, vector<int>& popV) {
        // 特殊情况
        if (pushV.size() == 0)
            return true;
        
        int idx_push = 0;
        int idx_pop = 0;
        int length = pushV.size();
        stack<int> temp;
        // 出栈入栈总共的操作数是元素个数的两倍
        for (int i = 0; i < length * 2; i++) {
            if (!temp.empty() && temp.top() == popV[idx_pop]) {
                temp.pop();
                idx_pop++;
            } else {
                temp.push(pushV[idx_push++]);
            }
        }

        return temp.empty();
    }
};

需要注意的是第14行如果写为:if (temp.top() == popV[idx_pop] && temp.empty())则会报错,因为编译器会先判断temp.top()是否与popV[idx_pop]相等,如果此时temp为空则会报错。所以要先进行是否为空的判断。

全部评论

相关推荐

06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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