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

栈的压入、弹出序列

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

栈的压入和弹出

[思路]:用一个栈模拟入栈过程,分情况。(i表示pushv,j表示popv)

	当popv[j] != pushv[i],即当前数入栈v。继续判断下一个
    当pushv[i] == popv[j],当前入栈立即出栈,此时两种情况(1.前面入栈的出栈)(2.继续入栈)
class Solution {
public:
    bool IsPopOrder(vector<int> pushV,vector<int> popV) {
        stack<int> v;
        int n = pushV.size();
        int i = 0,j = 0;
        while(i < n && j < n){
            if(pushV[i] != popV[j])
                v.push(pushV[i++]);
            else{
                ++i,++j;
                while(!v.empty() && v.top() == popV[j]){
                    v.pop();
                    ++j;
                }
            }
        }
        if(v.empty())return true;
        return false;
    }
};
全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务