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

栈的压入、弹出序列

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;
    }
};
全部评论

相关推荐

Gaynes:查看图片
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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